2017-05-12 40 views
2

我試圖在使用Matlab python包的python中執行matlab函數。但是,從Mathworks網站運行簡單的example時,出現錯誤消息。 當我運行代碼:在Python中使用Matlab

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 

這個錯誤是什麼意思?我可以調用不包含列表的OK函數,但只要我嘗試傳遞一個向量/列表,就會得到相同的錯誤。我需要傳遞m x n個數組,所以這是做這件事的關鍵。

感謝

回答

1

您呼叫。雙形式MATLAB這是沒有定義,我認爲你需要import matlab爲好,從https://www.mathworks.com/help/compiler_sdk/python/matlab-arrays-as-python-variables.html。 P/S:之前我沒有

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

感謝您的回答。我認爲這會做到這一點,但我仍然得到相同的錯誤信息......它適合你嗎? –

1

使用MATLAB根據https://nl.mathworks.com/help/matlab/matlab_external/get-started-with-matlab-engine-for-python.html

雙重包含在包MATLAB和不matlab.engine功能。你有沒有試過只導入matlab包?

import matlab 
+0

謝謝。我現在已經添加了這個功能(愚蠢的是忘記了..),但它仍然給我提供了同樣的錯誤信息。它適合你嗎? –

+0

我安裝了matlab軟件包並運行了你的腳本,它沒有錯誤地工作(也沒有導入matlab行)。也許嘗試重新安裝軟件包? – kwant

+0

我重新啓動了Spyder,運行了代碼,它很好。然後我再次運行代碼並彈出錯誤。所以我連接到一個新的核心,同樣的事情再次發生 - 它似乎運行良好的第一次運行,但後來我必須連接到一個新的內核......怪異的。 –