MATLAB:如何使用每小时数据计算每天的总降水量? (netcdf)

MATLAB: How to calculate total precipitation per day using hourly data ? (netcdf)

我有来自 ECMWF ERA5 的特定年份中每一天的每小时数据。我想将该数据从每小时转换为每天。哥白尼在这里有一个 Python 代码 https://confluence.ecmwf.int/display/CKB/ERA5%3A+How+to+calculate+daily+total+precipitation
我想知道执行此操作的 matlab 代码是什么?我将 netcdf 文件上传到我的 google 驱动器中: https://drive.google.com/open?id=1qm5AGj5zRC3ifD1_V-ne2nDT1ch_Khik 每天的时间步长是:

0:00
1:00
2:00
3:00
4:00
5:00
6:00
7:00
8:00
9:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
21:00
22:00
23:00

通知以涵盖2017年1月1日的总降水量为例,我们需要两天的数据: 2017 年 1 月 1 日时间 = 01 - 23 将为您提供涵盖 00 - 23 UTC 的 2017 年 1 月 1 日的总降水量数据 2017 年 1 月 2 日时间 = 00 将为您提供涵盖 2017 年 1 月 1 日 23 - 24 UTC 的总降水量数据 这是 ncdisp():

>> ncdisp(filename)
Source:
           C:\Users\Behzad\Desktop\download.nc
Format:
           64bit
Global Attributes:
           Conventions = 'CF-1.6'
           history     = '2019-11-01 07:36:15 GMT by grib_to_netcdf-2.14.0: /opt/ecmwf/eccodes/bin/grib_to_netcdf -o /cache/data6/adaptor.mars.internal-1572593007.3569295-19224-27-449cad76-bcd6-4cfa-9767-8a3c1219c0bb.nc /cache/tmp/449cad76-bcd6-4cfa-9767-8a3c1219c0bb-adaptor.mars.internal-1572593007.35751-19224-4-tmp.grib'
Dimensions:
           longitude = 49
           latitude  = 41
           time      = 8760
Variables:
    longitude
           Size:       49x1
           Dimensions: longitude
           Datatype:   single
           Attributes:
                       units     = 'degrees_east'
                       long_name = 'longitude'
    latitude 
           Size:       41x1
           Dimensions: latitude
           Datatype:   single
           Attributes:
                       units     = 'degrees_north'
                       long_name = 'latitude'
    time     
           Size:       8760x1
           Dimensions: time
           Datatype:   int32
           Attributes:
                       units     = 'hours since 1900-01-01 00:00:00.0'
                       long_name = 'time'
                       calendar  = 'gregorian'
    tp       
           Size:       49x41x8760
           Dimensions: longitude,latitude,time
           Datatype:   int16
           Attributes:
                       scale_factor  = 3.0792e-07
                       add_offset    = 0.010089
                       _FillValue    = -32767
                       missing_value = -32767
                       units         = 'm'
                       long_name     = 'Total precipitation'

tp 是我的变量,它有 3 个维度 (lon*lat*time) = 49*41*8760 我想要 49*41*365 的平年。
结果应该是全年的每日值。

虽然可能存在一些矢量化版本可以将您的矢量重塑为 4 个维度,但一个简单的 for 循环就可以完成这项工作。

tp_daily=zeros(size(tp,1),size(tp,2),365);
for ii=0:364
    day=tp(:,:,ii*24+1:(ii+1)*24); %grab an entire day 
    tp_daily(:,:,ii+1)=sum(day,3); % add the third dimension
end