Matrix Indexing from an Array of Numbers
3 ビュー (過去 30 日間)
古いコメントを表示
Hello:
I have a matrix Y = 55x236 of values and a separate matrix Z = [24 38 46 52 66] I would like to extract all of the rows of Y but ONLY the columns starting at the values in Z (plus the next 4 columns). So in other words I would like to extract from Y, columns 24-28, 38-42, 46-50, 52-56, and 66-70.
So far I have been doing this with a for loop but this seems like something that could be done much easier. I have tried something like A = Y(:, (Z:Z+4)) but this only gives me columns 24-28. If I have to index into Z to do this, wouldn't that still require a loop?
0 件のコメント
採用された回答
Roger Stafford
2016 年 2 月 26 日
編集済み: Roger Stafford
2016 年 2 月 26 日
Assuming Z is a row vector
Y2 = Y(:,bsxfun(@plus,Z,(0:4).'));
その他の回答 (1 件)
dpb
2016 年 2 月 26 日
One soluion; may be some "more better"...
idx=cell2mat(arrayfun(@colon,Z,Z+4,'uniform',0))); % column indices vector
A=Y(:,idx);
On can dispense with the temporary idx of course by folding into the indexing expression...
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!