I have a cell array (36*72*1000), I wish to extract every other cell column-wise and every cell row-wise...
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
Sean de Wolski
am 17 Aug. 2012
Bearbeitet: Sean de Wolski
am 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 Kommentare
Sean de Wolski
am 17 Aug. 2012
You don't need a for-loop.
C2 = what_I_have_above;
will do the extraction for you!
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!