How to create vectors from a cell array?

31 views (last 30 days)
I have a cell array consisting of 3 cells (1x10, 1x15, 1x20). How can I efficiently create 3 vectors?
  1 Comment
Stephen23
Stephen23 on 3 Jul 2017
Edited: Stephen23 on 3 Jul 2017
@Yerzhigit Bapin: why can't you simply keep the data in the cell array and use indexing? Using indexing is much simpler and more efficient than creating/access variable names dynamically:

Sign in to comment.

Answers (2)

Adam
Adam on 3 Jul 2017
Edited: Adam on 3 Jul 2017
[a,b,c] = myCell{:};
Not advisable if the number of vectors you want to create escalates to the state that you are next going to ask how you name then a1, a2, a3, etc, but for just extracting an explicit number of outputs the above should work.
  5 Comments
Stephen23
Stephen23 on 3 Jul 2017
Edited: Stephen23 on 3 Jul 2017
cellfun(@cumsum,C,'uni',0)
where C is your input cell array.

Sign in to comment.


Image Analyst
Image Analyst on 3 Jul 2017
Use deal():
% Setup: Make cell array consisting of 3 cells (1x10, 1x15, 1x20).
ca = {ones(1,10), rand(1,15), randi(9, 1, 20)}
celldisp(ca); % Display it.
% Make vectors
[v1, v2, v3] = deal(ca{:})
or simply assign the 3 vectors
v1 = ca{1};
v2 = ca{2};
v3 = ca{3};

Categories

Find more on Cell Arrays 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!