2015-01-12 4 views
1

크기가 150x220x250이고 스칼라 값이 많은 3 차원 데이터 세트가 있습니다. 220x250 크기의 150 조각 스택으로 보았습니다. 이 150 개의 220x250 슬라이스 중 하나를 추출하고 싶습니다. I 슬라이스Matlab의 3D 데이터에서 데이터 조각 추출

slice = mydata(20, :, :); 

이 치수 220 × 250 1 ×인 슬라이스의 결과를 추출하기 위해이 명령을 사용했다. 슬라이스의 크기가 220 x 250 인 경우에만 사용하겠습니다. Matlab 커맨드가 원하는 슬라이스를 얻을 수 있도록 도와 줄 수 있습니까?

+3

'squeeze()'를 사용하십시오. – Oleg

+0

@OlegKomarov, 굉장! 그게 효과가 있었어! 추출과 짜내기를 결합한 한 줄짜리 명령이 있습니까? –

+2

'squeeze (mydata (20, :, :))' – David

답변

1

squeeze() 함수는 배열에서 싱글 톤 차원을 제거합니다.

예컨대 당신이 조각을 추출하는 차원 배열의 마지막 차원이되도록

mydata=ones(150,220,250); 
size(mydata) 

ans = 

    150 220 250 

slice = squeeze(mydata(20,:,:)); 
size(slice) 

ans = 

    220 250 

또는, 당신은 당신의 배열을 뒤 바꿔 수 있습니다. Matlab은 배열의 마지막 차원 인 경우 싱글 톤 차원을 생략하므로 스퀴즈 기능은 필요하지 않습니다.

예컨대

mydata_reordered = permute(mydata,[2 3 1]); 
size(mydata_reordered) 

ans = 

    220 250 150 

slice2 = mydata_reordered(:,:,20); 
size(slice2) 

ans = 

    220 250 
+0

고마워요. 예를 들어 루이스 멘도 (Luis Mendo)의 요지를 자세히 설명해 준다면 이것을 답변으로 표시하겠습니다. –

+2

그냥 그랬 으면 좋겠어! – mattboud