Picking values from n-d array along 3rd dimension
조회 수: 1 (최근 30일)
이전 댓글 표시
Hi,
Suppose I have A, an m x n x q array with large integer values.
I have B, an m x n array of integer values in the range of 1:q.
I'd like to pick values from A along the 3rd dimension, so that I obtain C, an m x n array in which for every subscript pair (i,j), m>i>1, n>j>1 the following is true:
x = B(i,j)
C(i,j) = A(i,j,x)
Is there an efficient, loop-free way of doing this?
Many thanks,
댓글 수: 0
채택된 답변
Andrei Bobrov
2013년 6월 11일
편집: Andrei Bobrov
2013년 6월 11일
[ii,jj] = ndgrid(1:m,1:n);
ijk = sub2ind(size(A),ii,jj,B);
C = A(ijk);
추가 답변 (2개)
David Sanchez
2013년 6월 11일
You can assign the value of C without referencing (i,j):
x = B(i,j);
C = A(:,:,x);
And you will have for all i, j that C(i,j) = A(i,j,x)
참고 항목
카테고리
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!