Matlab:修改3D细胞矩阵的每个立方体

时间:2015-10-22 19:51:19

标签: matlab cell

我使用mat2cell创建了一个12 x 13 x 5的单元格矩阵,其中每个单元格包含一个29 x 29 x 29的立方体。 如何生成仅包含每个29 x 29 x 29立方体的中央21 x 21 x 21立方体的新3D单元格? 即所以新矩阵仍然是12 x 13 x 5,但每个包含一个21 x 21 x 21的原始立方体中央体素?

1 个答案:

答案 0 :(得分:1)

要裁剪个别块,您可以使用简单的索引表达式:

c=4 % cut of c rows on each side.
for ix=1:numel(X)
   X{ix}=X{ix}(1+c:end-c,1+c:end-c,1+c:end-c);
end

如果您的目标是提供更好性能的解决方案,我建议切换到多维矩阵:

c=4
Y=reshape(X,29,12,29,13,29,5);
%now the first block is squeeze(Y(:,1,:,1,:,1))
%now cut to smaller blocks:
Y=Y(1+c:end-c,:,1+c:end-c,:,1+c:end-c,:);