Usando una serie de funciones anidadas complejas iniciadas por un script (imagemeasure5.m), he creado dos matrices de estructura en MATLAB. Cada una de estas matrices de estructura contiene dos escalares y dos matrices de 1 columna, ~ 500 matrices. Las matrices de estructura se denominan outputa y outputb. Mi objetivo es guardar individualmente los elementos de estas matrices en variables en JMP
Todo lo que he encontrado en línea y en otras preguntas indica que una vez que se inicializa MATLAB y se ejecuta un script, se puede usar MATLAB Get para recuperar tipos de datos, incluidas matrices y escalares, y guardarlos en variables JMP. Estas son las tres formas en que he intentado hacerlo, con todos mis códigos de inicialización de matlab incluidos:
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 Sin embargo, por alguna razón, si estoy haciendo referencia a un escalar simple llamado en MATLAB, a la matriz de estructura, o a cualquier otro tipo de variable MATLAB normal, la salida de Matlab Get () es SIEMPRE 1. Sé que puedo guardar los datos de MATLAB en un archivo e importarlos en su lugar, pero dado que este programa probablemente se ejecutará cientos de veces, eso parece excesivo.
No creo que haya un problema con mi conexión, ya que la secuencia de comandos se ejecuta y almacena las variables en el área de trabajo de MATLAB simplemente bien. No puedo entender por qué esta sintaxis aparentemente funciona para todos los demás o dónde me equivoco.
No me importa cómo en este momento, solo necesito una buena forma de crear secuencias de comandos de almacenamiento automático de estas variables en JMP para un análisis más detallado.
¡Gracias!
Si alguien está interesado, me puse en contacto con el soporte técnico de JMP y los siguientes pasos resolvieron el problema:
1. guardando individualmente los componentes de la matriz de estructura en matlab como variables y luego exportando a JMP (que ya había intentado)
2. Usando variables de entorno y una sintaxis ligeramente diferente:
Set Environment Variable("MATLABROOT","C:\Program Files\MATLAB\R2016a");
//helps locate matlab
MLroot = Get Environment Variable( "MATLABROOT" );
MATLAB Submit("\[imagemeasure5]\"); //submits measurement script3. Cambio a una versión anterior de matlab