I have a cell array (36*72*1000), I wish to extract every other cell column-wise and every cell row-wise...
5 views (last 30 days)
Show older comments
So,
I want to extract cell a2, b4, c6 etc from:
a1 a2 a3 a4;
b1 b2 b3 b4;
ie. I should have 36 values, which I would like displayed as a column for each of my 1000 matrices. So a new cell array 36*1*1000 - does this make sense?!
Can someone please show me how this can be done?
Thanks in advance...
0 Comments
Accepted Answer
Sean de Wolski
on 17 Aug 2012
Edited: Sean de Wolski
on 17 Aug 2012
C(:,2:2:end,:) %all rows, even columns, all pages
More
Since you only want one element from each row, it will require a little extra work. Here is one approach:
C = num2cell(rand(4,8,5)); %sample cell
sz = size(C); %how big?
C2 = C(:,2:2:end,:); %remove every other column
idxEye = repmat(logical(eye(sz(1))),[1 1 sz(3)]); %create a logical 3d index of the diagonal
C3 = reshape(C2(idxEye),sz(1),1,sz(3)) %extract and reshape
3 Comments
Sean de Wolski
on 17 Aug 2012
You don't need a for-loop.
C2 = what_I_have_above;
will do the extraction for you!
More Answers (0)
See Also
Categories
Find more on Creating and Concatenating Matrices 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!