Matlab:4维矩阵的平均值

时间:2013-09-18 19:47:47

标签: matlab matrix multidimensional-array mean netcdf

我在Matlab中有一个4维矩阵(time,one_variable,Y_location,X_location)。

以下是4-d矩阵:

>> size (npp_data_pft1)
ans =
100     1   289   570

100意味着100次步; 1表示此处仅有1个变量; 289和570是y和x网格单元索引。

如何获得特定区域的平均值?

例如,我喜欢在33 <区域内获得时间步长1的平均值。 Y_location&lt; 47和112&lt; X_location&lt; 176。

3 个答案:

答案 0 :(得分:10)

这样做的一种方法是提取你的区域然后取平均值。

A = npp_data_pft1(1, 1, 33:47, 112:176);
mean(A(:))    % returns scalar value

答案 1 :(得分:7)

这就是诀窍:

M = npp_data_pft1(:, 1, 33:47, 112:176);
mean(reshape(M,[],size(M,3)*size(M,4))');

在此示例中,答案将输出每个值,每个值具有您在每帧中选择的区域的平均值。我将4D矩阵重新塑造为2D矩阵。该矩阵具有100行(总帧数)和975列(所选区域中的总像素数)。然后在该2D矩阵上使用mean将产生每帧的整个区域的平均值。 (我使用'来获得正确维度的平均值,而不是mean(...,2)}

答案 2 :(得分:2)

我假设您想要对多个时间值进行平均值。在这种情况下,我建议如下,其中1:20表示您要观察的时间值范围:

mean(mean(npp_data_pft1(1:20, 1, 33:47, 112:176),3),4);

这给出了具有所需平均值的20x1向量。

请注意,mean的第二个参数表示计算平均值的维度。