我试图在我的Python脚本中使用Mlab来调用Matlab函数,但是我收到了错误:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/mlab/mlabraw.py", line 58, in open
ret.open()
UnboundLocalError: local variable 'ret' referenced before assignment
Exception AssertionError: AssertionError() in <bound method MlabWrap.__del__ of <mlab.mlabwrap.MlabWrap object at 0x7f83e8989450>> ignored
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/mlab/mlabraw.py", line 58, in open
ret.open()
UnboundLocalError: local variable 'ret' referenced before assignment
Traceback (most recent call last):
File "./testMlab.py", line 1, in <module>
from mlab.releases import R2018a as matlab
File "/usr/local/lib/python2.7/dist-packages/mlab/releases.py", line 125, in __getattr__
return self.instances[name]
File "/usr/local/lib/python2.7/dist-packages/mlab/releases.py", line 63, in __getitem__
self[k] = self.get_mlab_instance(k)
File "/usr/local/lib/python2.7/dist-packages/mlab/releases.py", line 87, in get_mlab_instance
instance = MlabWrap()
File "/usr/local/lib/python2.7/dist-packages/mlab/mlabwrap.py", line 405, in __init__
self._session = mlabraw.open()
File "/usr/local/lib/python2.7/dist-packages/mlab/mlabraw.py", line 61, in open
raise MatlabReleaseNotFound('Could not open matlab, is it in %s?' % matlab_path)
mlab.matlabpipe.UnixMatlabReleaseNotFound: Could not open matlab, is it in /home/yuh5/Matlab2018a/bin/matlab?
Exception AssertionError: AssertionError() in <bound method MlabWrap.__del__ of <mlab.mlabwrap.MlabWrap object at 0x7f83e8989450>> ignored
它确实抱怨Matlab没有安装在预期的路径上 . 我在matlabpipe.py中将此行硬编码为:
if is_linux():
# base_path = '/usr/local/MATLAB/R%d%s/bin/matlab'
base_path = '/home/yuh5/Matlab%d%s/bin/matlab'
这是github上Mlab项目的链接:
我也注意到这个项目几年前已经停止更新,所以它是否仍然适用于最新版本的Matlab?
1 回答
也许你应该定义路径变量或使用
pip
设置库 .由于它看起来不可能并且库看起来不活跃,我建议你在数字python的充满活力的空间中使用实时库 . 特别是numpy和pandas对大多数项目都很有用 . 它们与matplotlib有很好的集成,这是一个图形库,可以复制mathlab的绘图行为和语法 .
如果你来自一个沉重的Matlab背景,那么有一个有用的过渡链接 . http://mathesaurus.sourceforge.net/matlab-numpy.html