Esegui simulazioni Matlab e crea una tabella dati JMP con i risultati delle simulazioniCarissimi,
Sto utilizzando JMP per eseguire simulazioni #Matlab. Ho creato un disegno con JMP che ha tre fattori (par1, par2 e par3) e diverse colonne vuote per le risposte (y1, y2). Ho creato uno script JSL che per ogni riga del disegno esegue il codice Matlab e ottiene i risultati della simulazione (tre vettori: tempo, y1 e y2; y1 e y2 sono infatti funzioni del tempo). Ora vorrei creare una tabella dati JMP con par1, par2, par3, ora, y1 e y2. Naturalmente, per una data simulazione par1, par2 e par3 devono avere gli stessi valori ripetuti lungo la simulazione. Ecco un esempio della nuova tabella che vorrei creare. Qualcuno può dirmi come dovrei affrontare il codice JSL una volta che ho importato l'ora, y1 e y2 come colonne in JMP?
Grazie molto.
par1 par2 par3 tempo 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 .. ..
Automazione e scriptingOggetto: eseguire simulazioni Matlab e creare una tabella dati JMP con i risultati delle simulazioniGrazie mille per il tuo aiuto. Sulla base dei tuoi suggerimenti sono stato in grado di scrivere un codice jsl che ha risolto il mio problema. Ecco il codice.
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;
);
);
Oggetto: eseguire simulazioni Matlab e creare una tabella dati JMP con i risultati delle simulazioniecco uno pseudo codice non testato che potrebbe adattarsi a ciò che stai descrivendo
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 ...Ho chiamato la variabile della tabella p1 per par1 per semplificare i problemi di ambito quando i nomi delle colonne sono gli stessi dei nomi delle variabili. Ho immaginato che facessi chiamate separate a matlab per ogni combinazione di par1,2,3. Ho immaginato che quei vettori si presentassero come matrici JSL. Fattori, progetti e matlab non sono la mia area di forza, potrei fraintendere il problema.
Oggetto: eseguire simulazioni Matlab e creare una tabella dati JMP con i risultati delle simulazioniCiao,
grazie per il codice, è stato utile.
Ho ancora bisogno di aiuto. Il mio problema è che il tempo non è un fattore del design originale. Il design originale ha solo par1, par2 e par3. Per ogni combinazione di par1, par2 e par3 JMP esegue Matlab e ne ottiene tre vettori (t, y1 e y2). Come posso chiedere a JMP di aggiungere questi tre vettori alla tabella dei dati dei risultati in modo tale da avere i valori per par1, par2 e par3 ripetuti n volte, dove n è la dimensione del vettore t?
Grazie.
Oggetto: eseguire simulazioni Matlab e creare una tabella dati JMP con i risultati delle simulazioniDi solito creo il formato della tabella di output nella GUI creando una nuova tabella con una singola riga che assomigli a ciò che voglio. Quindi usa il triangolo rosso per ottenere il script di tabella (nessun dato) . Incolla lo script in un editor, dt = impasto ;
Quindi rimuovi gli addrow dallo script che hai appena incollato, lasciando solo le definizioni delle colonne. Rimuovi anche il bit di colonna selezionato, se viene visualizzato.
Il ciclo che scrivi per popolare la tabella utilizzerà addrows(1) per ogni riga e imposterà ogni variabile su quella riga. La riga predefinita sarà la riga appena aggiunta, quindi
for( ... ,
dt<<ADDROWS></ADDROWS>
Ecco un esempio che ha aggiunto tre righe in ogni ciclo Differenza di linee .