HELP!! I need to use a loop to make my cell array

9 views (last 30 days)
I have a 40x1 cell array, "locations," where each element is a 270x33 matrix. My goal is a 1x1320 cell array, "master locations," where each element is a 270x1 column vector, which would be all of the individual columns from the elements of "locations." Essentially, I want a code that automates the following
master_location{1} = locations{1}(:,1)
master_location{2} = locations{1}(:,2)
master_location{34} = locations{2}(:,1)
master_location{1320} = locations{40}(:,33)

Answers (2)

Image Analyst
Image Analyst on 3 Mar 2018
Try this:
counter = 1;
for k = 1 : 40
for col = 1 : 33
master_location{counter} = locations{k}(:, col);
counter = counter + 1;
Why does it have to be a cell array rather than a simple, regular numerical array like a double?
Image Analyst
Image Analyst on 3 Mar 2018
Edited: Image Analyst on 3 Mar 2018
Something like
master_location(counter, col) = locations{k}(:, col);
but you need to preallocate space for master_location before the loop. If you need more help, attach a .mat file with your data.
Or maybe what Ahmet gave will work. I like to have data to test with, so attach yours.

Sign in to comment.

Ahmet Cecen
Ahmet Cecen on 3 Mar 2018
Edited: Ahmet Cecen on 3 Mar 2018
Huh, my answer to this question seems to have disappeared.
This should solve your specific problem. The output will be an array instead. If you really want a cell, use mat2cell afterwards.

Community Treasure Hunt

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

Start Hunting!

Translated by