How to handle multi Matlab return values in Python

25 vues (au cours des 30 derniers jours)
Jason Shih
Jason Shih le 1 Juil 2015
Commenté : Bo Li le 6 Fév 2017
I'm using Matlab 2014b, and I want to call Matlab function from Python(2.7.6). Here is my Python script:
import matlab.engine as meng
import matlab as mat
eng = meng.start_matlab()
try:
x,y = eng.Fun_Py(3,4)
print x
print y
eng.quit()
except:
print "error in python script"
eng.quit()
and here is my Matlab script:
function [x,y]=Fun_Py(a,b) x=zeros(a,b); y=sum(x); end
When I ran the Python scipt, I got "error in python script".How can I solve this problem? Any help is appreciate.
Jason Shih

Réponse acceptée

Bo Li
Bo Li le 1 Juil 2015
There are two things need to be done.
1. Add the folder where Fun_Py.m is located into MATLAB path from MATLAB command window:
Or you can change the current folder in MATLAB to where Fun_Py.m is located, for example if it is located in c:\temp:
eng.cd(r'C:\temp)
2. Set the number of output to 2 if 2 output is expected:
x,y = eng.Fun_Py(3,4, nargout=2)
  3 commentaires
Petru-Daniel Tudosiu
Petru-Daniel Tudosiu le 5 Fév 2017
@Bo Li I tried what you said and it says that the function did not expect that explicit variable. I am using Python 3.4 with Matlab R2016b. Can You please help me?
Bo Li
Bo Li le 6 Fév 2017
I need more details maybe sample code to understand "the function did not expect that explicit variable".
A simple MATLAB function that returns multiple output is gcd:
>>> a,b,c=eng.gcd(8,10, nargout=3)
>>> a,b,c
(2L, -1L, 1L)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Call MATLAB from Python dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by