从 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
我有一个大小为 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