2015-01-12 79 views
1

我有一個尺寸爲150x220x250的3維數據集,其中有許多標量值。我把它看作一堆150片尺寸爲220x250的片。我想提取這150個220x250切片中的一個。我用這個命令提取切片在Matlab中從3D數據中提取數據片段

slice = mydata(20, :, :); 

這導致片是尺寸220×250 X 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