如何从python for python中保存/检索matlab执行的内容?
我需要从python运行一个matlab脚本。matlab脚本返回一个数组,我想可以将其保存为*.mat文件 是否可以直接从python执行matlab代码,然后检索它 例如:如何从python for python中保存/检索matlab执行的内容?,python,arrays,matlab,file-io,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") funct
myarr = somematlabbridge.execute("matlab function")
或者,有没有可能这样做:
somematlabbridge.execute("matlab functions to execute the matlab and save it in a file")
function boxes = demo(yourInputArguments)
这样我就可以将文件读入Python来检索matlab函数的输出了
我需要的matlab输出将是一个2D数组。顺便说一下,我正在从Anaconda/Spyder运行Python
编辑
让我澄清一下我到底想做什么。
有一个软件,我想执行,这是Matlab。我不知道,我真的知道Matlab。
但是脚本只需运行demo.m
。运行该脚本时,脚本将创建一系列内容,包括一个名为box
的数组。我之所以知道这一点,是因为我可以看到代码,因为在Matlab环境中,我可以单击工作区中的框
变量,Matlab将显示其内容。如下图所示:
这个名为box
的2D数组是我需要在Python脚本中处理的内容
那么如何做到这一点呢?
我不太懂Matlab,所以我不确定演示脚本是否是“返回盒子数组”,脚本的最后一行是:
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.
正确的方法是什么?我想说
返回框
在MATLAB中是无效的语法
如果希望演示函数返回框
,则需要确保函数的第一行如下所示:
somematlabbridge.execute("matlab functions to execute the matlab and save it in a file")
function boxes = demo(yourInputArguments)
不知道如何从python调用它
如果事情不顺利,您还可以尝试将matlab函数的输出写入文本文件,然后从任何程序加载。为此,请在文件底部添加以下行:
dlmwrite('boxes.txt',boxes)
或者,如果你只想看到结果,考虑只把这个单词添加到函数的末尾,基本上是一个命令,将框的内容打印到StdOUT:
boxes
如果执行print(myarr),您会得到什么?我现在没有时间给出完整的答案,但是您可以从命令提示符调用MATLAB(请参见:答案的一半)因此,我希望您可以使用
子流程
直接调用MATLAB:您可以将MATLAB脚本写入文本文件或其他文件,这样您就可以使用numpy
(或其他文件IO例程)读入。此外,理想情况下,我应该打印出一个2D数组。