I have a cell array (36*72*1000), I wish to extract every other cell column-wise and every cell row-wise...
5 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Sean de Wolski
2012 年 8 月 17 日
編集済み: Sean de Wolski
2012 年 8 月 17 日
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 件のコメント
Sean de Wolski
2012 年 8 月 17 日
You don't need a for-loop.
C2 = what_I_have_above;
will do the extraction for you!
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!