我在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。
答案 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
的第二个参数表示计算平均值的维度。