使用由一个脚本(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