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)
这是诀窍:
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))