我需要从python运行一个matlab脚本。 matlab脚本返回一个数组,我想这可以保存为* .mat文件。
是否可以直接从python执行matlab代码,然后检索它?
例如:
myarr = somematlabbridge.execute("matlab function")
否则,是否可以这样做:
somematlabbridge.execute("matlab functions to execute the matlab and save it in a file")
这样我就可以将文件读入Python以检索matlab函数的输出了吗?
我需要从matlab输出的是2D数组。顺便说一下,我从Anaconda / Spyder运行Python。
让我澄清一下我要做的事情。
我想要执行的软件here,即Matlab。我不知道真正了解Matlab。
但该脚本只需运行demo.m
即可。当你运行它时,脚本会创建一堆东西,包括一个名为boxes
的数组。我知道这是因为我可以看到代码,因为在Matlab环境中,我可以单击Workspace中的boxes
变量,Matlab会向我显示其内容。如下图所示:
这个名为boxes
的2D数组是我需要进入Python脚本进行处理的。
那怎么办呢? 我不太了解Matlab,所以我不确定我是否可以说演示脚本是&#34;返回盒子数组&#34;,真的是脚本中的最后一行只是这样:< / p>
boxes = BoxRemoveDuplicates(boxes);
所以我将这一行添加到Matlab代码中:
return boxes;
然后在Python中做到了这一点:
import win32com.client
h = win32com.client.Dispatch('matlab.application')
myboxes= h.Execute ("PATH_TO_FILE\\demo.m")
print myboxes
哪个给了我
??? Error: Unexpected MATLAB operator.
这样做的正确方法是什么?
答案 0 :(得分:1)
我会说return boxes
在MATLAB中是无效的语法。
如果你想让demo函数返回boxes
,你需要确保functi0n的第一行看起来像这样:
function boxes = demo(yourInputArguments)
不确定如何从python中调用它。
如果事情没有成功,您也可以尝试将matlab函数的输出写入文本文件,您可以从任何程序加载。为此,在文件底部添加以下行:
dlmwrite('boxes.txt',boxes)
或者,如果您只想查看结果,请考虑仅在函数末尾添加此单词,基本上是将框内容打印到stdout的命令:
boxes