Utilizzando una serie di funzioni annidate complesse avviate da uno script (imagemeasure5.m), ho creato due array di strutture in MATLAB. Queste matrici di struttura contengono ciascuna due scalari e due 1 colonne, ~ 500 matrici di riga. gli array della struttura sono denominati outputa e outputb. Il mio obiettivo è salvare individualmente gli elementi di questi array in variabili in JMP
Tutto quello che ho trovato online e in altre domande indica che una volta che MATLAB è inizializzato e viene eseguito uno script, MATLAB Get può essere utilizzato per recuperare tipi di dati, comprese matrici e scalari e salvarli in variabili JMP. Ecco i tre modi in cui ho provato a farlo, con tutti i miei codici di inizializzazione MATLAB inclusi:
Platform Preferences(
pathvar(MATLABROOT( "C:\Program Files\MATLAB\R2016b" )));
Names Default To Here( 1 );
gui_directory = "'C:\Users\mredford\Desktop\MATLAB Import 3.1'";
mlconn = MATLAB Connect(); // Connects to Matlab
MATLAB Init(); // Initializes Matlab
MATLAB Submit( "clc,clear all,close all,imtool close all" );
MATLAB Submit( "cd " || gui_directory );
Try( MATLAB Send( ::jmp_previous_path ), show("Previous Image Path Not Found") );
MATLAB Submit( "imagemeasure5" );
scalefactorone = MATLAB Get( outputa.Xs); //trying to reference using structure array
scalefactortwo = MATLAB Get(pixmermm); // attempting to reference using a simple saved scalar variable
scalefactorthree = MATLAB Get("pixpermm"); //trying quotes since some sources said to Per qualche ragione, tuttavia, sia che io faccia riferimento a un semplice scalare con nome in MATLAB, o all'array della struttura, o qualsiasi altro tipo di variabile MATLAB normale, l'output di Matlab Get () è SEMPRE 1. So che posso salvare i dati MATLAB in un file e importarlo, ma poiché questo programma verrà probabilmente eseguito centinaia di volte sembra eccessivo.
Non penso che ci sia un problema con la mia connessione, dato che lo script è in esecuzione e memorizzando le variabili nello spazio di lavoro di MATLAB bene. Non riesco a capire perché questa sintassi funzioni apparentemente per tutti gli altri o dove sto sbagliando.
Non mi interessa davvero come a questo punto, ho bisogno di un buon modo per script di archiviazione automatica di queste variabili in JMP per ulteriori analisi.
Grazie!
Se qualcuno è interessato, ho contattato il supporto tecnico di JMP e i seguenti passaggi hanno risolto il problema:
1. salvare individualmente i componenti dell'array di strutture in MATLAB come variabili e quindi esportare in JMP (cosa che ho provato)
2. Usando le variabili d'ambiente e una sintassi leggermente diversa:
Set Environment Variable("MATLABROOT","C:\Program Files\MATLAB\R2016a");
//helps locate matlab
MLroot = Get Environment Variable( "MATLABROOT" );
MATLAB Submit("\[imagemeasure5]\"); //submits measurement script3. Passare a una versione precedente di MATLAB