【发布时间】:2018-02-02 22:10:45
【问题描述】:
我在 python 中运行 matlab 代码时遇到问题。 当我运行我的简单代码时,我在 matlab 控制台中有以下信息:
未定义的函数或变量“信使”。
matlabserver 中的错误(第 7 行) messenger('init', socket_address);
Matlab 代码:
%% MATLAB
function lol = yourfunc(args)
arg1 = args.arg1;
arg2 = args.arg2;
lol = arg1 + arg2;
end
Python 代码:
from pymatbridge import Matlab
mlab = Matlab()
mlab.start()
res = mlab.run('...path\yourfunc.m', {'arg1': 3, 'arg2': 5})
print(res['result'])
【问题讨论】:
-
嗨,你是在 32 位 linux 机器上运行这个吗?
-
我在 windows 10 64 和 pycharm 上运行它
-
看着这个github thread @quic0:我在 Windows 10 上遇到了同样的问题。问题是 Matlab 找不到 mex 文件 messenger.mexw64。如果您将 mex 文件从 pymatbridge\messenger\mexw64 复制到 Python 包文件夹中的 pymatbridge\matlab,它就会连接。 似乎所有其他问题都与专门为您的系统重新编译 messenger mex 文件有关
-
好的,现在可以了,但是我有一个问题,当我在 pycharm 中打印 'res' 时,我有这个 "{'result': '', 'success': False, 'content' : {'stdout': '输入参数太多。'}}"
-
Dzejkob,恭喜您回答了第一个问题,欢迎访问该网站。请阅读how to ask questions 上的网站指南。具体来说,避免将第二个问题与原始问题混为一谈(尤其是因为两者本质上完全不相关,并且第二个问题不再对应于问题主体),而是更愿意将此类问题作为单独的独立问题提出。此外,考虑使用信息量更大的标题,以帮助未来的用户在谷歌上搜索相同的错误。 “Matlab 错误”信息量极少。