Row/column-wise logical indexing
9 ビュー (過去 30 日間)
古いコメントを表示
I have a matrix
A=[1 2 3;
4 5 6;
7 8 9];
where each row represents a group of numbers. I have a logical matrix
L = [ 0 0 0 1 1 1 1 1 1;
1 1 1 0 0 0 1 1 1;
1 1 1 1 1 1 0 0 0]
where each column represents the groups of A I want to extract.
For example,
A(L(:,1),:) gives me
[4 5 6;
7 8 9]
A(L(:,4),:) gives me
[1 2 3;
7 8 9]
Is there a way to extract all such pairs of rows of A in one vectorized step instead of looping over the columns of L?
0 件のコメント
回答 (1 件)
Akira Agata
2019 年 6 月 6 日
How about the following solution?
B = arrayfun(@(k) A(L(:,k),:), 1:size(L,2), 'UniformOutput', false);
Then, your can obtain cell array B where B{1} = A(L(:,1),:), B{2} = A(L(:,2),:), ... B{9} = A(L(:,9),:).
参考
カテゴリ
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!