2017-05-12 4 views
2

Ich versuche Matlab-Funktionen in Python mit dem Matlab Python-Paket auszuführen. Wenn ich jedoch eine einfache example von der Mathworks-Website ausführen, erhalte ich eine Fehlermeldung. Wenn ich den Code ausführen:Verwendung von Matlab in Python

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

erhalte ich die Fehlermeldung:

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 

Was bedeuten diese Fehler? Ich kann Funktionen aufrufen, die keine Listen enthalten, aber sobald ich versuche, einen Vektor/eine Liste zu übergeben, bekomme ich den gleichen Fehler. Ich muss m x n Arrays durchreichen, also ist dies der Schlüssel dazu.

Dank

Antwort

1

Sie .double Form Matlab fordern, die nicht definiert ist, ich glaube, Sie import matlab auch benötigen, von https://www.mathworks.com/help/compiler_sdk/python/matlab-arrays-as-python-variables.html. P/s: Ich habe verwenden Matlab nicht vor

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

Vielen Dank für Ihre Antwort. Ich dachte, das würde den Trick machen, aber ich bekomme immer noch die gleiche Fehlermeldung ... funktioniert es für dich? –

1

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

Die Funktion Doppel im Paket Matlab enthalten ist und nicht matlab.engine. Haben Sie versucht, nur das Paket Matlab zu importieren?

import matlab 
+0

Danke. Ich habe das jetzt hinzugefügt (dumm zu vergessen ..), aber es gibt mir immer noch die gleiche Fehlermeldung. Hat es für dich funktioniert? –

+0

Ich habe das Matlab-Paket installiert und dein Skript ausgeführt und es funktioniert ohne Fehler (auch ohne die Import-Matlab-Zeile). Vielleicht versuchen Sie das Paket neu zu installieren? – kwant

+0

Ich habe Spyder neu gestartet, lief den Code und es war in Ordnung. Dann habe ich den Code erneut ausgeführt und der Fehler ist aufgetreten. Also bin ich mit einem neuen Kernel verbunden und das gleiche passiert wieder - es scheint beim ersten Durchlauf gut zu funktionieren, aber dann muss ich mich mit einem neuen Kernel verbinden ... komisch. –