Matlabシミュレーションを実行し、シミュレーション結果を含むJMPデータテーブルを作成します親愛なるみんな、
JMPを使用して#Matlabシミュレーションを実行しています。 3つの要素(par1、par2、par3)と応答用のいくつかの空の列(y1、y2)を持つJMPを使用して設計を作成しました。 デザインの各行に対してMatlabコードを実行し、シミュレーションの結果を取得するJSLスクリプトを作成しました(3つのベクトル:時間、y1とy2、y1とy2は実際には時間の関数です)。 ここで、par1、par2、par3、time、y1、y2を使用してJMPデータテーブルを作成したいと思います。 もちろん、特定のシミュレーションでは、par1、par2、およびpar3の同じ値をシミュレーションに沿って繰り返す必要があります。 これが私が作成したい新しいテーブルの例です。 時間y1とy2を列としてJMPにインポートしたら、そのためのJSLコードにどのようにアプローチする必要があるかを誰かに教えてもらえますか?
どうもありがとう。
par1 par2par3時間y1y2
3 1 1 1...。
3 1 1 2...。
3 1 1 3...。
4 1 1 1...。
4 1 1 2...。
4 1 1 3...。
DOEスクリプティングRe:Matlabシミュレーションを実行し、シミュレーション結果を含むJMPデータテーブルを作成します私は通常、GUIで出力テーブルの形式を作成するために、必要なものに似た単一の行を持つ新しいテーブルを作成します。 次に、赤い三角形を使用してテーブルスクリプト(データなし) 。 そのスクリプトをエディターに貼り付けます、dt =ペースト;
次に、貼り付けたばかりのスクリプトからaddrowsを削除し、列の定義だけを残します。 選択した列ビットが表示された場合は、それも削除します。
テーブルにデータを入力するために作成するループは、各行にaddrows(1)を使用し、その行に各変数を設定します。 デフォルトの行は追加されたばかりの行になるため、
for( ... ,
dt<<ADDROWS></ADDROWS>これは、各ループに3つの行を追加した例です。 https://community.jmp.com/t5/Discussions/Difference-of-lines/mp/417373/highlight/true#M66646 。
Re:Matlabシミュレーションを実行し、シミュレーション結果を含むJMPデータテーブルを作成しますこんにちは、
コードをありがとう、それは役に立ちました。
まだ助けが必要です。 私の問題は、時間が元のデザインの要因ではないということです。 元のデザインには、par1、par2、およびpar3しかありません。 par1、par2、およびpar3の組み合わせごとに、JMPはMatlabを実行し、3つを取得します。ベクトル(t、y1およびy2)。 par1、par2、par3の値をn回繰り返すように、これら3つのベクトルを結果データテーブルに追加するようにJMPに依頼するにはどうすればよいですか。nはtベクトルの次元です。
ありがとう。
Re:Matlabシミュレーションを実行し、シミュレーション結果を含むJMPデータテーブルを作成しますこれがあなたが説明しているものに合うかもしれないいくつかのテストされていない擬似コードです
for( par1 = 1, par1 <= 3, par1+=1, // 3...how ever many combinations there are
for(par2 = 1, par2 <= 5, par2 +=1, // 5
for(par3 = 1, par2 <= 2, par3+= 1, // 2
/* get the vectors from matlab using par1,par2,par3 */
/* somehow mat_t, mat_y1, and mat_y2 are now JSL matrices, n rows by 1 col */
for( i = 1, i<= n, i+=1, // n is the vector length, write a row for each element
dt<<ADDROWS></ADDROWS>... close all the parens ...列名が変数名と同じである場合のスコープの問題を単純化するために、par1のテーブル変数にp1という名前を付けました。 par1、2、3の組み合わせごとにmatlabを個別に呼び出すことを想像しました。 それらのベクトルがJSL行列として表示されることを想像しました。 Factors and Designsとmatlabは私の得意分野ではないので、この問題を誤解している可能性があります。
Re:Matlabシミュレーションを実行し、シミュレーション結果を含むJMPデータテーブルを作成します手伝ってくれてありがとうございます。 あなたの提案に基づいて、私は私の問題を解決するjslコードを書くことができました。 これがコードです。
MATLAB Submit( "iii=0;" ); // Initialize the counter in Matlab
For Each Row(
dt1,
row_n_dt1 = row_n_dt1 + 1;
v0 = :Pattern[row_n_dt1];
v1 = :F1[row_n_dt1];
v2 = :F2[row_n_dt1];
v3 = :F3[row_n_dt1];
MATLAB Submit( "iii=iii+1;" );
MATLAB Send( v1 );
MATLAB Send( v2 );
MATLAB Send( v3 );
MATLAB Submit( "FF1=v1" );
MATLAB Submit( "FF2=v2" );
MATLAB Submit( "FF3=v3" );
MATLAB Submit( "main_II" ); // execute the code contained in the matlab file 'main_II'
MATLAB Submit( "xlswrite(filename, [t y],iii);" ); // write an excel file with all the simulation results; each sheet contains a simulation
MATLAB Submit( "y1=y(:,1);" ); // create the vector y1 in Matlab
MATLAB Submit( "y2=y(:,2);" ); // create the vector y2 in Matlab
MATLAB Submit( "whos" );
mat_y1 = MATLAB Get( y1 ); // JMP imports vectors y1, y2 and t as matrices
mat_y2 = MATLAB Get( y2 );
mat_t = MATLAB Get( t );
n_timevector = Dim( mat_t ); // dimensions of matrix mat_t
n = n_timevector[1]; // lenght of vector t
//i=1;
dt2 << addrows( n ); // for each simulation add n rows to the simulation table
For( i = 1, i <= n, i += 1, // n is the vector length, write a row for each element of the time vector in table dt2
row_n_dt2 = row_n_dt2 + 1;
dt2:Pattern[row_n_dt2] = v0;
dt2:x1[row_n_dt2] = mat_y1[i]; // different values for n rows
dt2:M[row_n_dt2] = mat_y2[i];
dt2:t[row_n_dt2] = mat_t[i];
dt2:F1[row_n_dt2] = v1; // repeats same value for n rows
dt2:F2[row_n_dt2] = v2;
dt2:F3[row_n_dt2] = v3;
);
);