我有一個尺寸爲150x220x250的3維數據集,其中有許多標量值。我把它看作一堆150片尺寸爲220x250的片。我想提取這150個220x250切片中的一個。我用這個命令提取切片在Matlab中從3D數據中提取數據片段
slice = mydata(20, :, :);
這導致片是尺寸220×250 X 1的。我希望切片的尺寸僅爲220 x 250。你能告訴我什麼Matlab命令將幫助我得到所需的切片,因爲我需要它。
我有一個尺寸爲150x220x250的3維數據集,其中有許多標量值。我把它看作一堆150片尺寸爲220x250的片。我想提取這150個220x250切片中的一個。我用這個命令提取切片在Matlab中從3D數據中提取數據片段
slice = mydata(20, :, :);
這導致片是尺寸220×250 X 1的。我希望切片的尺寸僅爲220 x 250。你能告訴我什麼Matlab命令將幫助我得到所需的切片,因爲我需要它。
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
謝謝。如果您還以示例的方式闡述了Luis Mendo的觀點,我會將其標記爲答案。 –
只是,希望它有幫助! – mattboud
使用'squeeze()'。 – Oleg
@OlegKomarov,太棒了!這工作!順便提一下,結合提取和擠壓的單行命令是否有用? –
'squeeze(mydata(20,:,:))' – David