matlab.engine function returns only the first output

10 vues (au cours des 30 derniers jours)
clpi
clpi le 9 Juil 2019
Commenté : clpi le 9 Juil 2019
Hello,
For a test, I have written a very simple matlab function that has two outputs:
function [y,z] = mat_func(x)
y = [2.0*x ,2.0*x] ;
z = [3.0*x, 3.0*x] ;
Then I wrote a python script which calls mat_func : [y,z] = eng.mat_func(2.0)
I got an error message "ValueError: need more than 1 value to unpack"
It works when I write: y= eng.mat_func(2.0) , but in this case of course I only get the first output, which is [4.0 4.0].
How can I get both outputs by calling the function from python ?
Thanks for any help !

Réponse acceptée

Steven Lord
Steven Lord le 9 Juil 2019
According to the "Return Multiple Output Arguments from MATLAB Function" section on this documentation page you need to call it with one output and an additional input that specifies the number of outputs you want. So something like this should work, though I haven't tried it myself:
yz = eng.mat_func(2.0, nargout=2)
  1 commentaire
clpi
clpi le 9 Juil 2019
Yes,it works ! Thamk you so much, I had forgotten about this "nargout" thing.
Have a good day!

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

Community Treasure Hunt

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

Start Hunting!

Translated by