我在 Matlab 中有一个 1x12 单元,该单元的每个元素都有一个 3d 矩阵。我想计算这些 3d 矩阵的平均值,以便获得一个 3d 矩阵,该矩阵与单元格的每个 3d 矩阵具有相同的维度,即 12 个 3d 矩阵的平均值。我该如何进行此操作?
我尝试提取每个单元格并创建一个 4d 矩阵,这样我就可以做到
mean(fourdmatrix,4)
。然而,似乎不可能创建 4d 矩阵。
确实如此,代码如下:
cell={threedmatrixA, threedmatrixB, ...}
fourdmatrix=[];
for i=1:12
fourdmatrix(i)=cell{i};
end
不起作用。我该怎么做?
如果您的数据位于 4d 数组中,那么这很简单,只需使用
mean
并提供要按照您的建议进行处理的维度。正如 @Cris 指出的那样,您可能会耗尽形成 4d 数组的内存(因为它将复制所有数据),在这种情况下您将需要循环遍历现有数组。但如果你有足够的内存,这应该可以工作:
% make 12 random 3d arrays in cell array `c`
for i=1:12
c{i} = rand(10, 10, 10);
end
% Make a 4d array:
array4d = cat(4, c{:}); % Same as writing cat(4, c{1}, c{2}, c{3}, etc)
m = mean(array4d, 4); % Take the mean along the 4th dimension
size(m) % Show the size of the output (here should be 10,10,10)