Matlab mat2cell将3D图像划分为块

Matlab mat2cell将3D图像划分为块,matlab,4d,Matlab,4d,我有一个大小为60 x 80 x 12 x 350的4D图像,即它是一个3D图像,其中每个体素都有一个时间序列(350个) 现在,我想使用mat2cell将三维图像分割为维度k*k*k的立方体。立方体中的每个体素是一个大小为350的向量(时间序列) 我想我可以用mat2cell来做,但我不知道具体怎么做。每个单元格最后都应该包含一个图像的3D块,其中块的每个体素是一个大小为350的向量。假设您的4D矩阵被称为M。您需要具有元素总和为size(M,i)的向量,其中i=1:4。假设k有一些值,我尝试

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

现在,我想使用
mat2cell
将三维图像分割为维度
k*k*k
的立方体。立方体中的每个体素是一个大小为350的向量(时间序列)


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

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


这里的
k
是什么?另外,你能清楚地解释结果单元格应该包含什么吗?如果
lxwxc
(C=channels)不能被
kxk
平均整除,会发生什么情况?例如,使用尺寸设置“60 x 80 x 12 x 350”和
k=10
可以为
60 x 80 x 10
创建体素,但最后两个通道会发生什么情况?@andrew我在回答中考虑了这一点,并切下了最后一个单元。我觉得它比填充物干净。
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)));