0

我已经安装了mlab用于从 python 运行一些 .m 脚本。

我已经从这个答案中测试了它的代码,它工作得很好。但是,当我尝试使用 run 命令运行脚本时,我的问题就开始了。

这是我尝试过的一切。

foo.m

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

测试.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.

然后我尝试将参数作为字典传递,就像这里一样。

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

在蟒蛇中,

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');

测试.py

matlab.run('foo.m')

这没有给我任何错误,但我也没有看到任何打印的内容。

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

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

4

0 回答 0