Matlab 读取多个.nc文件

Matlab 读取多个.nc文件,matlab,plot,time-series,netcdf,Matlab,Plot,Time Series,Netcdf,我有许多名为'MERRA2_100.tavg1_2d_rad_Nx.19800101.SUB.nc'的.nc文件,从19800101到20180330(yyyyymmdd),其中包含尺寸为65*80*24的变量CLDHGH、CLDLOW、CLDMID、CLDTOT 如何使用这些文件为一个变量“CLDHGH”绘制完整时间段(1980-01-01至2018-03-30)的时间序列图 我使用以下代码为CLDHGH绘制了一天(24小时)的时间序列图: cldhigh = ncread('D:\cloud

我有许多名为'MERRA2_100.tavg1_2d_rad_Nx.19800101.SUB.nc'的.nc文件,从1980010120180330(yyyyymmdd),其中包含尺寸为65*80*24的变量CLDHGH、CLDLOW、CLDMID、CLDTOT


如何使用这些文件为一个变量“CLDHGH”绘制完整时间段(1980-01-01至2018-03-30)的时间序列图

我使用以下代码为CLDHGH绘制了一天(24小时)的时间序列图:

cldhigh = ncread('D:\cloudnc\MERRA2_100.tavg1_2d_rad_Nx.19800101.SUB.nc','CLDHGH');
cldhigh(cldhigh==0)=NaN;
cldhighmean=nanmean(cldhigh);
cldhighmean2=nanmean(cldhighmean,2);
CLDHGH=reshape(cldhighmean2,[24 1]);
ts1=timeseries(CLDHGH,1:24);
ts1.Name= 'High Cloud';
ts1.TimeInfo.Units = 'hours';

plot(ts1);

你可以读取所有文件,提取日期,按正确的顺序排列

d = dir('*.nc');
for ct = 1:length(d)
    n=d(ct).name;
    date = datetime(n(28:35),'Format','yyyyMMdd');
    times = date+hours(0:23);
end
此代码首先生成一个结构,该结构具有扩展名为
.nc
的所有文件的属性。然后,它在它们上面执行for循环并提取名称,将其放入
n
。从n中,您可以使用
datetime
获取数据,因为您的日期似乎始终是字符
28到35
。如果不是,请使用
regexpr
查找它。最后一行将24小时添加到找到的日期,这样您就有了一个用于绘图的时间向量


从这一点开始,您应该能够输入自己的代码并使其工作。

您的问题是什么?如何为一个变量“CLDHGH”绘制完整时间段(1980-01-01至2018-03-30)的时间序列图?之后?一起读取文件??ncread(???,'CLDHGH');等等…我试着用这个代码,nd只能在9点前完成我的任务;对于i=1:9 cld=['D:\cloudnc\MERRA2_100.tavg1_2d_rad_Nx.1980010',num2str(i),'.SUB.nc'];cldhigh(:,:,:,i)=ncread(cld,'CLDHGH');这并不奇怪。将数字转换为字符串,如果选择10,则日期为
198001010
。但是1980年10月10日太遥远了,我已经给了你们一个方向。我不会只写你想要的程序。您需要为此联系ICT咨询公司,但并非如此。:-)