2011-09-08 7 views
7

3 차원 배열이 있고 특정 값을 찾아 세 좌표를 가져올 수 있기를 바랍니다. 예를 들어MATLAB : 다차원 배열에서 값의 좌표 찾기

, 내가있는 경우 :

A = [2 4 6; 8 10 12]

A(:,:,2) = [5 7 9; 11 13 15]

내가 7가 어디 있는지 찾으려면, 나는 i = 1j = 2k = 2

I 좌표를 좀하고 싶습니다 find(A == 7)의 변형을 시도했지만 아직 어디에도 없습니다.

감사합니다.

답변

12

당신이 찾는 기능은 ind2sub입니다 :

[i,j,k]=ind2sub(size(A), find(A==7)) 
i = 
    1 
j = 
    2 
k = 
    2 
+0

굉장한, 이것은 내가 찾고 있었던 것입니다. 감사! –

0

당신은 배열에 제로가 아닌 요소의 위치를 ​​찾을 수 있습니다,하지만 산술의 조금 필요합니다. 문서에서 : 희소 행렬 작업시

[row,col] = find(X, ...)은 행렬 (X)의 제로 엔트리의 행 및 열의 인덱스를 반환이 구문은 특히 유용하다. X가 N> 2 인 N 차원 배열 인 경우 col에는 열에 대한 선형 인덱스가 포함됩니다. 예를 들어 X (4,2,3)에 0이 아닌 요소가있는 5x7x3 배열 X의 경우 find는 행에 4 을, 열은 16을 반환합니다. 즉, (1 페이지 7 열) +

+ (3 페이지에 2 열) = 16 ( 2 페이지 7 열)이며, 행렬 M 일부 치수 a x b x c 다음 인덱스 (i,j,k)이 있으면 값 x은 다음과 같습니다.

[row,col] = find(A==x); 
i = row; 
j = mod(col,b); 
k = ceil(col/b);