2

任务:在 Windows 7(所有 x64)上使用 Python 3.x 从 Matlab 2013b 调用函数。

问题:是否有允许我这样做的 Python 包?

我已经尝试过:

  • mlabwrap
  • python-matlab-bridge
  • pymatlab

但这些都不适用于上面给出的配置。

感谢您提供有关使用 Python 3.x 的工作配置的任何信息。

如果您需要更详细的信息,请告诉我。


更新:我目前正在尝试使用 Matlab2011b 和 Pyhton 2.7 来完成这项工作,因为这些似乎是最常用的版本。现在我陷入了以下困境:

python-matlab-bridge 我可以毫无问题地导入模块,但是一旦启动会话,Matlab 命令窗口就会弹出,没有其他任何反应。Python 窗口显示:

Starting MATLAB on ZMQ socket tcp://127.0.0.1:55555
Send 'exit' command to kill the server
............................................................Matlab session timed
 out after 60 seconds
MATLAB failed to start
Press any key to continue . . .

每次都会发生这种情况,并且没有给出错误。

mlabwrap 我尝试使用本指南安装 mlabwrap 。在键入“python setup.py install”时,会弹出一个 Matlab 命令窗口,然后什么也没有发生。如果我关闭命令行窗口,Python 输出显示:

WINDOWS SPECIFIC ISSUE? Unable to remove c:\users\martin\appdata\local\temp\tmp1
y2kdk; please delete it manually
[Error 32] Der Prozess kann nicht auf die Datei zugreifen, da sie von einem ande
ren Prozess verwendet wird: 'c:\\users\\martin\\appdata\\local\\temp\\tmp1y2kdk'


INSTALL ABORT: 'matlab -nodesktop -nosplash -wait -r "fid = fopen(\'c:\\users\\m
artin\\appdata\\local\\temp\\tmp1y2kdk\', \'wt\');fprintf(fid, \'%s%c%s%c%s%c\',
 version, 10, matlabroot, 10, computer, 10);fclose(fid); quit"' RETURNED ERROR C
ODE -805306369
PLEASE MAKE SURE matlab IS IN YOUR PATH!

我的%Path%样子是这样的(只有重要的部分;):

D:\MATLAB\R2011b\bin;C:\Program Files\ZeroMQ 4.0.4\lib;D:\Python27;D:\Python27\scripts;D:\MATLAB\R2011b\runtime\win64;D:\MATLAB\R2011b\extern\lib\win64\microsoft;D:\MATLAB\R2011b\bin\win64

感谢您在 Windows 上获得 Matlab 和 Python 之间的任何连接的任何帮助!我真的不明白为什么这些都不起作用......


更新 2:我现在可以安装 mlabwrap,但我无法启动它。当我尝试导入 mlabwrap 时,Matlab 命令窗口会打开并在一分钟后关闭。Python 输出为:

>>> import mlabwrap
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Python27\lib\site-packages\mlabwrap.py", line 645, in <module>
    mlab = MlabWrap()
  File "D:\Python27\lib\site-packages\mlabwrap.py", line 405, in __init__
    self._session = mlabraw.open(os.getenv("MLABRAW_CMD_STR", ""))
mlabraw.error: Unable to start MATLAB(TM) engine

我仔细检查了 Matlab 的 engdemo 是否正常工作。

4

1 回答 1

1

我现在使用python-matlab-bridge让它工作。我手动将其转换为 Python3,并且更改已合并到官方存储库中,因此它现在应该可以开箱即用了。

如果您收到无法找到“messenger init”的错误,请确保它Lib\site-packages\pymatbridge\matlab位于您的PATH.

如果您有任何问题或其他信息,请随时评论此答案,我将添加它以帮助用户开始使用 python-matlab-bridge。

于 2014-04-15T09:21:49.303 回答