如何在Matlab中计算单元格中3d矩阵的平均值?

问题描述 投票:0回答:1

我在 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

不起作用。我该怎么做?

arrays matlab matrix cell mean
1个回答
0
投票

如果您的数据位于 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)
© www.soinside.com 2019 - 2024. All rights reserved.