Extract 2D array from 3D array using logical index
조회 수: 2 (최근 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일
편집: Stephen23
2024년 10월 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!