Can a Comma Separated List be Generated Directly from a sym Array?

Can a comma separated list be generated directly from a sym array for use as input to a sym function?
>> xvar=sym('x',[1 4])
xvar =
[ x1, x2, x3, x4]
>> yvar=sym('y',[1 4])
yvar =
[ y1, y2, y3, y4]
>> f(xvar)=sum(xvar)
f(x1, x2, x3, x4) =
x1 + x2 + x3 + x4
>> f(yvar)
Error using symfun/subsref (line 177)
Symbolic function expected 4 input arguments but received 1.
>> temp=num2cell(yvar);
>> f(temp{:})
ans =
y1 + y2 + y3 + y4
Baically, is there a way evaluate f at the elements of yvar without having to create the temp variable, as needed for generailized code where the lengths of xvar and yvar are not known ahead of time?

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 1 Feb. 2021
Bearbeitet: Walter Roberson am 1 Feb. 2021
Can a comma separated list be generated directly from a sym array for use as input to a sym function?
NO. But you can do it without an explicit temporary variable.
xvar=sym('x',[1 4]);
yvar=sym('y',[1 4]);
f(xvar) = sum(xvar);
f(struct('v', num2cell(yvar)).v)
ans = 

1 Kommentar

Thank you. I never would have thought of that. Too bad that we can't do
f(yvar{:})
or
f(num2cell(yavr){:})

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Symbolic Math Toolbox finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2019a

Gefragt:

am 31 Jan. 2021

Kommentiert:

am 1 Feb. 2021

Community Treasure Hunt

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

Start Hunting!

Translated by