À l'aide d'une série de fonctions imbriquées complexes lancées par un script (imagemeasure5.m), j'ai créé deux tableaux de structure dans MATLAB. Ces tableaux de structure contiennent chacun deux scalaires et deux matrices de 1 colonne, ~ 500 lignes. les tableaux de structure sont nommés outputa et outputb. Mon objectif est de sauvegarder individuellement les éléments de ces tableaux en variables dans JMP.
Tout ce que j'ai trouvé en ligne et dans d'autres questions indique qu'une fois MATLAB initialisé et un script exécuté, MATLAB Get peut être utilisé pour extraire des types de données, notamment des matrices et des scalaires, et les sauvegarder dans des variables JMP. Voici les trois méthodes que j'ai essayées, avec tous mes codes d'initialisation Matlab inclus:
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 Toutefois, pour une raison quelconque, que je fasse référence à un scalaire nommé simple dans MATLAB, au tableau de structure ou à tout autre type de variable MATLAB normale, la sortie de Matlab Get () est TOUJOURS 1. Je sais que je peux sauvegarder les données MATLAB dans un fichier et l'importer à la place, mais puisque ce programme sera probablement exécuté des centaines de fois, cela semble excessif.
Je ne pense pas qu'il y ait de problème de connexion, car le script est en cours d'exécution et stocke les variables dans l'espace de travail de MATLAB. Je n'arrive pas à comprendre pourquoi cette syntaxe fonctionne apparemment pour tout le monde ou là où je me trompe.
Cela ne me dérange pas vraiment de savoir comment, à ce stade, j'ai juste besoin d'un bon moyen de script pour enregistrer automatiquement le stockage de ces variables dans JMP pour une analyse plus approfondie.
Merci!
Si quelqu'un est intéressé, j'ai contacté le support technique JMP et les étapes suivantes ont résolu le problème:
1. enregistrement individuel des composants de tableau de structure dans matlab sous forme de variables, puis exportation vers JMP (testée auparavant)
2 Utilisation de variables d’environnement et d’une syntaxe légèrement différente:
Set Environment Variable("MATLABROOT","C:\Program Files\MATLAB\R2016a");
//helps locate matlab
MLroot = Get Environment Variable( "MATLABROOT" );
MATLAB Submit("\[imagemeasure5]\"); //submits measurement script3 Passage à une ancienne version de matlab