mat2cell 将 3D 图像分成块

mat2cell to divide 3D image into blocks

我有一个大小为 60 x 80 x 12 x 350 的 4D 图像,即它是一个 3D 图像,其中每个体素都有一个时间序列(350)。

现在我想用mat2cell将3D图像分成k*k*k维数的立方体。立方体中的每个体素都是一个大小为 350 的向量(时间序列)。

我想我可以用 mat2cell 做到这一点,但我不知道具体怎么做。每个单元格最后应包含图像的 3D 块,其中块的每个体素都是大小为 350 的向量。

假设您的 4D 矩阵称为 M。您需要具有元素总和为 size(M, i) 其中 i = 1:4 的向量。假设 k 有一些值,我尝试了 4(因为它是您指定的尺寸的公因数)和 3(因为它不是)。

k = 3;
MPrime = mat2cell(M, ...
    [k*ones(1, floor(size(M,1)/k)), mod(size(M,1), k)], ...
    [k*ones(1, floor(size(M,2)/k)), mod(size(M,2), k)], ...
    [k*ones(1, floor(size(M,3)/k)), mod(size(M,3), k)], ...
    ones(1, size(M,4)));