【问题标题】:Matlab: spatial average in a 4d matrix (time, case, x, y)Matlab:4d矩阵中的空间平均值(时间,案例,x,y)
【发布时间】:2013-10-02 02:06:40
【问题描述】:

这是我的数据集:

压力(时间,案例,x,y)

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

如何在每个时间步中获得 x 从 30 到 60 和 y 从 40 到 70 的空间纳米压力?

例如:从时间 1 到时间 100 的每个时间步长的特定区域的 nanmean 值。

我试过这个,“spatial_mean_pressure = nanmean(pressure(:,:,30:60,40:70))" 它平均了时间序列中的压力。这不是我想要的结果。

>> size(spatial_mean_pressure)
ans =
1     1    31    31

我喜欢得到这样的结果:

>> size(spatial_mean_pressure)    
ans =
100     1    1    1

【问题讨论】:

    标签: matlab average netcdf


    【解决方案1】:

    您正试图获得整个矩阵块的平均值。因此,您应该两次而不是一次申请nanmean。此外,沿特定维度应用它以获得所需的结果。我想这就是你想要的。

    x=randi(10,[100 1 10 25]);
    

    首先取第三个维度的平均值。

    mean_x_3=nanmean(x,3);
    

    您会得到大小 = [100 1 1 25] 的答案。然后沿第 4 维取平均值。

    mean_x_4=nanmean(mean_x_3,4);
    

    这应该会给你想要的答案。您可以将其写在一行中,

    mean_x = nanmean(nanmean(x,3),4);
    

    【讨论】:

    • 我通过以下方法得到了完整的结果:method#1: mean_x = nanmean(nanmean(x,3),4);方法#2:M = x(1:100, 1, 1:10, 1:25); mean_xy = nanmean(reshape(M,size(M,3)*size(M,4),[]))';
    • @Kuo-HsienChang 如果您觉得它有用,请点赞或接受答案,以便其他人更容易。
    猜你喜欢
    • 1970-01-01
    • 2018-12-02
    • 2016-11-06
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 2013-09-23
    相关资源
    最近更新 更多