【问题标题】:Using Matlab in Python在 Python 中使用 Matlab
【发布时间】:2017-05-12 10:00:16
【问题描述】:

我正在尝试使用 Matlab python 包在 python 中执行 matlab 函数。但是,当从 Mathworks 网站运行简单的 example 时,我收到一条错误消息。 当我运行代码时:

import matlab.engine
eng = matlab.engine.start_matlab()
a = matlab.double([1,4,9,16,25])
b = eng.sqrt(a)
print(b)

我收到错误消息:

  File "/dir/Trying.py", line 27, in <module>
    a = matlab.double([1,4,9,16,25])

  File "//anaconda/envs/netcdf/lib/python2.7/site-packages/matlab/mlarray.py", line 51, in __init__
    raise ex

TypeError: 'NoneType' object is not callable

这个错误是什么意思?我可以调用不包含列表的函数,但只要我尝试通过向量/列表,我就会得到同样的错误。我需要传递 m x n 数组,所以这是这样做的关键。

谢谢

【问题讨论】:

  • 您的代码确实有效....也许您的python版本与您的Matlab版本不兼容?

标签: python matlab


【解决方案1】:

您正在调用未定义的 .double 形式 matlab,我认为您还需要从 https://www.mathworks.com/help/compiler_sdk/python/matlab-arrays-as-python-variables.html 调用 import matlab。 P/s:我之前没用过matlab

import matlab.engine
import matlab
eng = matlab.engine.start_matlab()
a = matlab.double([1,4,9,16,25])
b = eng.sqrt(a)
print(b)

【讨论】:

  • 感谢您的回答。我认为这样可以解决问题,但我仍然收到相同的错误消息...它对您有用吗?
【解决方案2】:

根据https://nl.mathworks.com/help/matlab/matlab_external/get-started-with-matlab-engine-for-python.html

函数 Double 包含在包 matlab 而不是 matlab.engine 中。您是否尝试过只导入包 matlab?

import matlab

【讨论】:

  • 谢谢。我现在已经添加了这个(愚蠢地忘记了..),但它仍然给我同样的错误信息。它对你有用吗?
  • 我安装了 matlab 包并运行了你的脚本,它运行时没有错误(也没有 import matlab 行)。也许尝试重新安装软件包?
  • 我重新启动了 spyder,运行了代码,一切正常。然后我再次运行代码并弹出错误。所以我连接到一个新的内核,同样的事情又发生了——它似乎在第一次运行时工作正常,但后来我必须连接到一个新的内核......很奇怪。
猜你喜欢
  • 2020-09-10
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 2014-11-09
  • 2015-07-09
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多