使用python中的mlab运行带有参数的.m文件

时间:2017-09-06 12:34:59

标签: python matlab python-mlab mlab

我已经安装了mlab来运行python中的一些.m脚本。

我已经从this回答测试了代码并且效果非常好。但是,当我尝试使用run命令运行脚本时,我的问题就出现了。

这是我尝试过的一切。

foo.m

function sum = foo(a,b) 
    sum= a+b;
    fprintf ('sum', sum); 

test.py

from mlab.releases import latest_release as matlab
sum= matlab.run('foo.m',5,6)
print sum

这给出了错误

sum=matlab.run('foo.m',5,6)
  File "D:\Program_Files\python\lib\site-packages\mlab-1.1.4 
py2.7.egg\mlab\mlabwrap.py", line 607, in mlab_command
    return self._do(name, *args, **update({'nout':nout}, kwargs))
  File "D:\Program_Files\python\lib\site-packages\mlab-1.1.4-
py2.7.egg\mlab\mlabwrap.py", line 542, in _do
    handle_out(mlabraw.eval(self._session, cmd))
  File "D:\Program_Files\python\lib\site-packages\mlab-1.1.4-
py2.7.egg\mlab\mlabraw.py", line 67, in eval
    matlab.eval(exp)
  File "D:\Program_Files\python\lib\site-packages\mlab-1.1.4-
py2.7.egg\mlab\matlabcom.py", line 89, in eval
    raise MatlabError(ret[begin:])
mlab.matlabcom.MatlabError: Error using run
Too many input arguments.

然后我尝试将参数作为字典传递给here

function sum = foo(args) 
    a= args.a
    b= args.b
    sum= a+b;
    fprintf ('sum', sum); 

在python中,

sum=matlab.run('foo.m',{'a':5,'b':6})
print sum

导致错误,

  sum=matlab.run('foo.m',{'a':5,'b':6})
  File "D:\Program_Files\python\lib\site-packages\mlab-1.1.4-
py2.7.egg\mlab\mlabwrap.py", line 607, in mlab_command
    return self._do(name, *args, **update({'nout':nout}, kwargs))
  File "D:\Program_Files\python\lib\site-packages\mlab-1.1.4-
py2.7.egg\mlab\mlabwrap.py", line 534, in _do
    mlabraw.put(self._session,  argnames[-1], arg)
  File "D:\Program_Files\python\lib\site-packages\mlab-1.1.4-
py2.7.egg\mlab\mlabraw.py", line 76, in put
    matlab.put({var_name : val})
  File "D:\Program_Files\python\lib\site-packages\mlab-1.1.4-
py2.7.egg\mlab\matlabcom.py", line 128, in put
   self.client.PutWorkspaceData(name, 'base', val)
  File "<COMObject matlab.application>", line 3, in PutWorkspaceData
TypeError: Objects of type 'dict' can not be converted to a COM VARIANT

在我真的厌倦后决定运行一个没有任何函数和参数的简单文件。

foo.m

clear all;
fprintf('This is python calling matlab');

test.py

matlab.run('foo.m')

这没有给我任何错误,但我也没有看到任何印刷品。

我现在不知道怎么办。我试图按照一些答案中的建议安装mlabwrap,但安装本身在Windows中不起作用。由于mlab只是一个重新包装的版本,我认为它会顺利运行。我已经彻底调查了这里的所有问题,没有任何帮助我。

那么基本上如何使用mlab运行.m文件?争论甚至更好。

0 个答案:

没有答案