다차원 배열이 있습니다. 예 :
T(1:3,1:3,1) = magic(3);
T(1:3,1:3,2) = 10 * magic(3);
T(1:3,1:3,3) = 100 * magic(3);
이제 .NET에서 특정 값을 추출하고 싶습니다 T
. 이러한 값의 위치는 행렬로 제공됩니다.
ind = [1,2,3;2,1,1;2,2,2;3,3,3];
따라서 첫 번째 값은 T (1,2,3), 두 번째 T (2,1,1) 등이되어야합니다.
지금은 다음과 같은 방식으로 수행하고 있습니다.
for n=1:4
output(n,1)=T(ind(n,1),ind(n,2),ind(n,3));
end
어디에 output
있어야
100
3
50
200
그러나 이것은 실제로 훨씬 더 큰 배열을 가지고 있기 때문에 정말 느립니다. 벡터화 된 방식으로 값에 액세스하는 방법이 있습니까?
그래서 다음과 같습니다.
output(1:4,1)=T( ind(1:4,1:3) )
를 사용 sub2ind
하여 첨자를 절대 (선형) 인덱스 로 변환 한 다음 이러한 선형 인덱스를 사용하여의 특정 값을 가져올 수 있습니다 T
.
indices = sub2ind(size(T), ind(:,1), ind(:,2), ind(:,3));
output = T(indices)
100
3
50
200
반대 변환을해야한다면 자매 함수 ind2sub
가 반대로 돌아갑니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다