Matlab 시뮬레이션을 실행하고 시뮬레이션 결과가 포함된 JMP 데이터 테이블 생성여러분 모두에게,
JMP를 사용하여 #Matlab 시뮬레이션을 실행하고 있습니다. 세 가지 요인(par1, par2 및 par3)과 응답에 대한 여러 빈 열(y1, y2)이 있는 JMP로 설계를 만들었습니다. 디자인의 각 행에 대해 Matlab 코드를 실행하고 시뮬레이션 결과를 가져오는 JSL 스크립트를 만들었습니다(세 개의 벡터: 시간, y1 및 y2, y1 및 y2는 실제로 시간의 함수임). 이제 par1, par2, par3, time, y1 및 y2가 있는 JMP 데이터 테이블을 만들고 싶습니다. 물론, 주어진 시뮬레이션에 대해 par1, par2 및 par3은 시뮬레이션을 따라 반복되는 동일한 값을 가져야 합니다. 다음은 내가 만들고자 하는 새 테이블의 예입니다. 시간, y1 및 y2를 JMP에 열로 가져온 후 JSL 코드에 어떻게 접근해야 하는지 알려주실 수 있나요?
감사합니다.
par1 par2 par3 시간 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 데이터 테이블 생성나는 일반적으로 내가 원하는 것처럼 보이는 단일 행으로 새 테이블을 만들어 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번 반복되는 방식으로 이 세 벡터를 결과 데이터 테이블에 추가하도록 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;
);
);