MATLAB Answers

How to pop the content of a matrix in a way like pop the content of a cell

14 views (last 30 days)
raym
raym on 19 Jun 2020
Commented: raym on 19 Jun 2020
We know that the arguments of a function can be placed in a cell and call it like this:
aCell = {arg1,arg2,arg3};
myFunction(aCell{:});
Is there a way to do this for a vector instead?
I tried this way, but it does not work
aVector = [2 3 4 5];
myFun(aVector(:)) % this does not work, the argument is a column vector [2;3;4;5] instead.
Similarly,
aVec = [1 2 3];
aCell = {'d','dew',aVec(:)} % I would expect aCell is {'d','dew',1,2,3}, but it is {'d','dew',[1;2;3]},
Thanks.

Accepted Answer

Ameer Hamza
Ameer Hamza on 19 Jun 2020
Madhan's answer already shows how to use num2cell. Following just show how can you avoid the creation of a temporary variable
v = [1 2 3];
myFun(struct('a', num2cell(v)).a)
  3 Comments

Sign in to comment.

More Answers (2)

madhan ravi
madhan ravi on 19 Jun 2020
Edited: madhan ravi on 19 Jun 2020
aVector = [2 3 4 5];
aVector = num2cell(aVector);
myFun(aVector{:}) % ;)

Walter Roberson
Walter Roberson on 19 Jun 2020
No there is not.
You can num2cell the vector and assign that to a variable and do expansion on that.
There are ways to use auxiliary anonymous functions to do the num2cell for you, and even to do cell expansion on the result, but when you proceed that way, the MATLAB parser will not know that multiple outputs are required and will pull out only the first value.

Community Treasure Hunt

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

Start Hunting!

Translated by