Extract 2D array from 3D array using logical index
30 ビュー (過去 30 日間)
古いコメントを表示
I have a PxMxN array that I want to convert in a PxK 2D array. K has to be obtained from a logical matrix MxN. Consequently, numel(K)<=numel(MxN). Can anyone help me? Thanks.
0 件のコメント
回答 (1 件)
Stephen23
2024 年 10 月 31 日 14:14
編集済み: Stephen23
2024 年 10 月 31 日 14:31
"I have a PxMxN array that I want to convert in a PxK 2D array. K has to be obtained from a logical matrix MxN. Consequently, numel(K)<=numel(MxN). Can anyone help me?"
Just use the indexing and then RESHAPE (which does not move any data in memory so is very efficient):
format compact
A = randi(9,5,4,3)
X = randi(0:1,4,3);
X = logical(X)
B = A(:,X); % easy indexing
B = reshape(B,size(A,1),[])
Checking the first of the index values:
[R,C] = find(X,1,'first')
A(:,R,C)
This works because MATLAB applies the final index to all trailing dimensions:
An interesting side-effect of this is that linear indexing is really just subscript indexing with one index.
0 件のコメント
参考
カテゴリ
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!