使用由一個腳本 (imagemeasure5.m) 啟動的一系列複雜嵌套函數,我在 MATLAB 中創建了兩個結構數組。 這些結構數組每個包含兩個標量和兩個 1 列,約 500 行矩陣。結構數組命名為 outputa 和 outputb。 我的目標是將這些數組中的元素單獨保存到 JMP 中的變量中
我在網上和其他問題中找到的所有內容都表明,一旦初始化 MATLAB 並運行腳本,MATLAB Get 可用於檢索數據類型,包括矩陣和標量,並將它們保存到 JMP 變量中。 這是我嘗試過的三種方法,包括我所有的 matlab 初始化代碼:
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 然而,出於某種原因,無論我是在 MATLAB 中引用一個簡單的命名標量、結構數組,還是任何其他類型的普通 MATLAB 變量,Matlab Get() 的輸出始終為 1。 我知道我可以將 MATLAB 數據保存到一個文件中,然後將其導入,但是由於這個程序可能會運行數百次,所以這似乎有點過分了。
我認為我的連接沒有問題,因為腳本正在運行並將變量存儲在 MATLAB 的工作區中。 我不明白為什麼這種語法似乎適用於其他人或我哪裡出錯了。
在這一點上,我真的不介意如何,我只需要一種好的方法來編寫 JMP 中這些變量的自動存儲腳本,以供進一步分析。
謝謝!
如果有人感興趣,我聯繫了 JMP 技術支持,以下步驟解決了問題:
1. 將 matlab 中的結構數組組件單獨保存為變量,然後導出到 JMP(我試過)
2. 使用環境變量和稍微不同的語法:
Set Environment Variable("MATLABROOT","C:\Program Files\MATLAB\R2016a");
//helps locate matlab
MLroot = Get Environment Variable( "MATLABROOT" );
MATLAB Submit("\[imagemeasure5]\"); //submits measurement script3.切換到舊版本的matlab