从 Matlab 中的 3D 数据中提取数据切片

Extracting a slice of data from a 3D data in Matlab

我有一个大小为 150x220x250 许多标量值的 3 维数据集。我把它看成一堆 150 个尺寸为 220x250 的切片。我想提取这 150 个 220x250 切片中的一个。我用这个命令来提取 slice

slice = mydata(20, :, :);

这导致切片的尺寸为 220 x 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

或者,您可以置换数组,以便提取切片的维度位于数组的最后一个维度中。那么,就不需要squeeze函数了,因为如果是数组的最后一维,Matlab会省略单维。

例如

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

ans =

   220   250   150

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

ans =

   220   250