
return a matrix from a MATLAB mfile(function) to python uing MATLAB API
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I want to send input data from python(Spyder) to MATLAB and use a function in MATLAB mfile named "triarea" and return thee variables to python. I the mfile is pretty simple:
function [e,f,g] = triarea(c,d) e = 0.5*(c.* d); f = [1 2 3]; g=zeros(4,5); end
The code I use in Spyder is: import matlab.engine eng=matlab.engine.start_matlab() aa,bb,cc=eng.triarea(1.5,2.5,nargout=3)
We have three outputs and two of them are matrixes. but when I run, only the first variable aa, which is a float is shown in spyder variable window. I wonder where the two matrixes are and how can I import matrixes from Matlab to python?
0 commentaires
Réponse acceptée
Stephan
le 27 Avr 2018
Modifié(e) : Stephan
le 27 Avr 2018
Hi,
everything you do is working fine. I used your matlab code:
function [e,f,g] = triarea(c,d)
e = 0.5*(c.* d);
f = [1 2 3];
g=zeros(4,5);
end
and added 1 line with the print command to your python code to see whats going on:
import matlab.engine
eng=matlab.engine.start_matlab()
aa,bb,cc=eng.triarea(1.5,2.5,nargout=3)
print(aa, bb, cc)
Everything works - see here:

variables bb and cc are given to python as a list. The only thing you have to do is grab them out and use or convert it like you need. I used LiClipse 4.2.0, Python 3.5 with Matlab 2018a on a Windows 10 platform.
Best regards
Stephan
Plus de réponses (1)
Stephan
le 27 Avr 2018
Modifié(e) : Stephan
le 27 Avr 2018
Hi again,
see here - there you learn about the datatypes:
from matlab to python:
from python to matlab:
the float type of python is equal to matlab double type. So it should be not a problem to use this data for further operations.
best regards
Stephan
Voir également
Catégories
En savoir plus sur Python Package Integration dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!