Matlab:4维矩阵的平均值

Kuo*_*ang 4 matlab matrix mean multidimensional-array netcdf

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

这是4-d矩阵看起来像:

>> size (npp_data_pft1)
ans =
100     1   289   570
Run Code Online (Sandbox Code Playgroud)

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

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

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

Pra*_*mar 10

一种方法是提取您的区域,然后取平均值.

A = npp_data_pft1(1, 1, 33:47, 112:176);
mean(A(:))    % returns scalar value
Run Code Online (Sandbox Code Playgroud)


bla*_*bla 7

这是诀窍:

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

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