How can I assign several values from cell-array tovariables?
Show older comments
I have the cell array from the example:
myNum = [1, 2, 3]; myCell = {'one', 'two'}; myStruct.Field1 = ones(3); myStruct.Field2 = 5*ones(5);
C = {myNum, 100*myNum; myCell, myStruct}
C = 2x2 cell array
{1x3 double} {1x3 double}
{1x2 cell } {1x1 struct}
I want to receive:
a=1
b=2
c=3
I've tried to do these, but didn't work:
[a,b,c]=C{1,1}
[a,b,c]=deal(C{1,1}(1,:))
I need to do in one time because my real code has dozens of values.
Thanks in advance for answers.
Accepted Answer
More Answers (2)
Walter Roberson
on 5 Sep 2019
Unfortunately the temporary variable is still a practical necessity. It can be done away with, at cost:
[a,b,c] = subsref(num2cell(C{1,1}), struct('type', '{}', 'subs', {{':'}}))
but it becomes a lot easier if you define
VECEXPAND = @(VEC) VEC{:};
DEALVEC = @(VEC) VECEXPAND(num2cell(VEC));
[a, b, c] = DEALVEC(C{1,1})
Diego R
on 5 Sep 2019
0 votes
Categories
Find more on Variables in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!