Matlab シミュレーションを実行し、シミュレーション結果を含む JMP データ テーブルを作成します。親愛なるみんな、
私は JMP を使用して #Matlab シミュレーションを実行しています。JMP を使用して、3 つの因子 (par1、par2、par3) と応答用のいくつかの空の列 (y1、y2) を持つ設計を作成しました。設計の各行で Matlab コードを実行し、シミュレーションの結果 (3 つのベクトル: 時間、y1、y2。y1 と y2 は実際には時間の関数) を取得する JSL スクリプトを作成しました。次に、par1、par2、par3、時間、y1、y2 を含む JMP データ テーブルを作成したいと思います。もちろん、特定のシミュレーションでは、par1、par2、par3 にはシミュレーションに沿って同じ値が繰り返される必要があります。以下は、作成する新しいテーブルの例です。時間、y1、y2 を列として JMP にインポートした後、JSL コードにどのように取り組めばよいか、どなたか教えていただけませんか。
どうもありがとう。
パー1 パー2 パー3 時間 y1 y2
3 1 1 1 .. ..
3 1 1 2 .. ..
3 1 1 3 .. ..
4 1 1 1 .. ..
4 1 1 2 .. ..
4 1 1 3 .. ..
自動化とスクリプト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;
);
);
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 行列として現れると想像しました。 因子と設計と matlab は私の得意分野ではないので、この問題を誤解している可能性があります。
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 データ テーブルを作成する通常、GUI で出力テーブルの形式を作成するには、希望どおりの 1 行の新しいテーブルを作成します。 次に、赤い三角形を使用して、テーブルスクリプト (データなし) 。 そのスクリプトをエディタに貼り付けます。 dt =ペースト;
次に、貼り付けたばかりのスクリプトから addrow を削除し、列定義だけを残します。 選択した列ビットが表示されている場合は、それも削除します。
テーブルにデータを入力するために作成したループは、各行に対して addrows(1) を使用し、その行に各変数を設定します。 デフォルトの行は追加したばかりの行になります。
for( ... ,
dt<<ADDROWS></ADDROWS>
各ループに 3 行を追加した例を次に示します。線の違い。