2017-10-15 3 views
0

각 페이지/슬라이스가 다른 슬라이스와 독립적 인 3D 매트릭스가 있습니다. 따라서 각 페이지의 데이터를 필터링하기 위해 find 명령을 사용하고 싶습니다. 그러나 적용하면 find은 내 데이터를 전체적으로 설명하는 행 벡터의 인덱스를 반환합니다. 실제로는 그렇지 않습니다. 나는이 같은 예상`find '를 사용하여 3D 행렬의 각 페이지 색인을 찾는 방법?

ind= 
1 2 5 9 10 11 20 24 25 ... 

:처럼이 ind 뭔가를 반환

a=rand(1,10,5); 
ind=find(a<0.3); 

예를 들어

ind(:,:,1)= 
1 2 3 

ind(:,:,2)= 
1 5 6 10 %based on each slice, independent to other slices 

을 제가 적용 할 수 있도록, 그래서 (독립)을 수행하도록 구성 발견 된 인덱스는 다른 행렬의 각 슬라이스에 있습니다.

루프를 사용하지 않고도이 작업을 수행 할 수 있습니까? 미리 감사드립니다!

+0

예제와 마찬가지로, 각 3D 슬라이스에 해당 조건을 만족시키는 인덱스 수가 다를 가능성이 높으므로 3D 배열을 출력으로 가질 수 없습니다. 3D 배열의 각 조각에있는 요소의 수는 동일해야합니다. 이러한 목적으로 셀 배열을 사용해야합니다. –

답변

0

색인을 아래 첨자로 변환하려면 ind2sub()을 사용하십시오. 이 같은 것이 차원 어레이 작동한다 : 상기

[i,j,k] = ind2sub(size(a), ind) 

, 출력 (i, j, k)는, 모두 동일한 크기 일 것이며, 즉 ind 같은 크기이다. 즉, a<0.3의 각 값에 대해 한 세트의 첨자 (i,j,k) (좌표)을 제공합니다.

그것은 당신이 당신의 질문에 기대/원하는 출력을 완전히 명확하지 않다,하지만 당신은 a의 각 페이지에 대해 별도의 첨자를 원한다면, 당신은 (i의 첫 번째 페이지에 대한 예를 들어, j(i==1),k(i==1)) 추가를 필터링해야합니다.

+0

더 설명해 주시겠습니까? 'i j k'로 무엇을해야합니까? 아니면 3D 매트릭스를 다시 형성하는 방법은 무엇입니까? –

+0

'rand()'를 사용하지 말고 재현 가능한 데이터를 사용하도록 질문을 수정하면 'magic()'과 같은 것을 시도해보십시오.) 그러면 달성하려는 것을 더 명확하게 알 수 있습니다! – Justin

관련 문제