1つのスクリプト(imagemeasure5.m)で開始された一連の複雑な入れ子関数を使用して、MATLABで2つの構造体配列を作成しました。これらの構造体配列はそれぞれ、2つのスカラーと2つの1列、最大500行の行列を含みます。構造体配列はoutputaとoutputbという名前です。私の目標は、これらの配列の要素をJMPの変数に個別に保存することです。
オンラインやその他の質問で私が見つけたことはすべて、MATLABが初期化されてスクリプトが実行されると、MATLAB Getを使用して行列やスカラーなどのデータ型を取得し、それらをJMP変数に保存できることです。これは私が試みた3つの方法で、すべての私の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に切り替える