MATLAB Answers

How to access a cell array using loops?

14 views (last 30 days)
I have a cell array A who's dimensions is in multiples of 8. For ex 1x192 , now i want to pick the elements of the cell array in the following way.
1,9,17,25...nth elements should be stored it in a separate cell array. similarly 2,10,18,26..n in a separate cell array and another set would be 3,11,19,27..n in a separate cell array. this must be continued till 8,16,24,32..
How can i automate this, where the cell array size is dynamic. But it is always a multiple of 8.
Any help would be appreciated thanks

Accepted Answer

Stephen Cobeldick
Stephen Cobeldick on 18 Apr 2018
Edited: Stephen Cobeldick on 18 Apr 2018

Storing data in lots of separate variables should be avoided, read this to know why:

https://www.mathworks.com/matlabcentral/answers/304528-tutorial-why-variables-should-not-be-named-dynamically-eval

The simplest solution would be for you to reshape your array into a matrix and access its rows/columns:

C = cell(1,192) % your cell array
M = reshape(C,8,[]);

then accessing the data that you require is trivial using basic MATLAB indexing:

M(1,:) % 1, 9,17,...
M(2,:) % 2,10,18,...
...
M(8,:) % 8,16,24,...

Note that you can easily access the data in a loop:

for k = 1:8
    M(k,:)
end

or split it into a cell array of cell arrays using num2cell.

  1 Comment
DEEPAK PHCSFI17041149
DEEPAK PHCSFI17041149 on 20 Apr 2018
Great Use of Re-Use function, thanks much Stephen.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by