如何从python为python保存/检索matlab执行的内容?

时间:2014-05-21 14:51:11

标签: python arrays matlab file-io

我需要从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会向我显示其内容。如下图所示: enter image description here

这个名为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.

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我会说return boxes在MATLAB中是无效的语法。

如果你想让demo函数返回boxes,你需要确保functi0n的第一行看起来像这样:

function boxes = demo(yourInputArguments)

不确定如何从python中调用它。

如果事情没有成功,您也可以尝试将matlab函数的输出写入文本文件,您可以从任何程序加载。为此,在文件底部添加以下行:

dlmwrite('boxes.txt',boxes)

或者,如果您只想查看结果,请考虑仅在函数末尾添加此单词,基本上是将框内容打印到stdout的命令:

boxes