Subfunction with output varargout returns only first element of cell array. Why?

2 Ansichten (letzte 30 Tage)
This is my script:
a=9;
b=2;
[varargout] = myfunc(a,b)
c=varargout
function [varargout] = myfunc(a,b)
sum=a+b;
dif=a-b;
prod=a*b;
varargout={sum,dif,prod}
end
After execution, the value of c is 11. I want it to be an array, with values 11, 7, 18. {sum, dif,prod}. What is wrong with my script, and how can I get the desired array?

Akzeptierte Antwort

Matt J
Matt J am 31 Aug. 2017
Bearbeitet: Matt J am 31 Aug. 2017
I you only want all the computations bundled into one output argument, then varargout is not the right thing:
function c = myfunc(a,b)
sum=a+b;
dif=a-b;
prod=a*b;
c={sum,dif,prod};
  3 Kommentare
Matt J
Matt J am 31 Aug. 2017
Bearbeitet: Matt J am 31 Aug. 2017
In that case, your original code is correct, but you need to call myfunc with more output arguments
sum=myfunc(dif)
or
[sum,dif] = myfunc(a,b)
or
[sum,dif,prod] = myfunc(a,b)
If you want a single output array but containing variable amounts of data, you have to control that through the input arguments,
function out = myfunc(a,b, howmany)
sum=a+b;
dif=a-b;
prod=a*b;
c={sum,diff,prod};
out=c(1:howmany);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by