Mithilfe einer Reihe komplexer verschachtelter Funktionen, die von einem Skript (imagemeasure5.m) initiiert wurden, habe ich in MATLAB zwei Strukturarrays erstellt. Diese Strukturarrays enthalten jeweils zwei Skalare und zwei Matrizen mit einer Spalte und ca. 500 Zeilen. Die Strukturarrays heißen „outputa“ und „outputb“. Mein Ziel ist es, die Elemente in diesen Arrays einzeln in Variablen in JMP zu speichern
Alles, was ich online und in anderen Fragen gefunden habe, deutet darauf hin, dass MATLAB Get verwendet werden kann, um Datentypen einschließlich Matrizen und Skalaren abzurufen und in JMP-Variablen zu speichern, sobald MATLAB initialisiert und ein Skript ausgeführt wird. Hier sind die drei Möglichkeiten, die ich versucht habe, einschließlich aller meiner Matlab-Initialisierungscodes:
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 Aus irgendeinem Grund ist die Ausgabe von Matlab Get() jedoch IMMER 1, unabhängig davon, ob ich auf einen einfachen benannten Skalar in MATLAB oder auf das Strukturarray oder einen anderen Typ einer normalen MATLAB-Variable verweise. Ich weiß, dass ich die MATLAB-Daten in einer Datei speichern und stattdessen importieren kann, aber da dieses Programm wahrscheinlich hunderte Male ausgeführt wird, erscheint mir das übertrieben.
Ich glaube nicht, dass es ein Problem mit meiner Verbindung gibt, da das Skript läuft und die Variablen problemlos im Arbeitsbereich von MATLAB speichert. Ich kann nicht herausfinden, warum diese Syntax scheinbar für alle anderen funktioniert oder wo ich falsch liege.
An dieser Stelle ist mir das eigentlich egal, ich brauche nur eine gute Möglichkeit, die automatische Speicherung dieser Variablen in JMP für die weitere Analyse per Skript zu erstellen.
Danke!
Wenn jemand Interesse hat, habe ich den technischen Support von JMP kontaktiert und die folgenden Schritte haben das Problem gelöst:
1. Struktur-Array-Komponenten einzeln in Matlab als Variablen speichern und dann nach JMP exportieren (was ich versucht hatte)
2. Verwendung von Umgebungsvariablen und einer etwas anderen Syntax:
Set Environment Variable("MATLABROOT","C:\Program Files\MATLAB\R2016a");
//helps locate matlab
MLroot = Get Environment Variable( "MATLABROOT" );
MATLAB Submit("\[imagemeasure5]\"); //submits measurement script3. Wechsel zu einer älteren Version von Matlab