Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从python for python中保存/检索matlab执行的内容?_Python_Arrays_Matlab_File Io - Fatal编程技术网

如何从python for 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

我需要从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")
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数组。