问题遇到的现象和发生背景
使用批量读取nc文件,filelist读取不出来,在限制经纬度和时间时,总是出现索引报错
问题相关代码,请勿粘贴截图
%%
%批量读取nc 位势高度场、经向风、纬向风,比湿场,相对湿度
clear all
clc
datadir='D:\desktop\data'; %指定批量数据所在的文件夹
filelist=dir([datadir,'*.nc']); %列出所有满足指定类型的文件
LonData=cell(1,1);
LatData=cell(1,1);
levelData1=cell(1,1);%存放位势高度场、经向风、纬向风的层数
levelData2=cell(1,1);%存放比湿的层数
TimeData=cell(1,1);
hgtData=cell(1,1);
uwndData=cell(1,1);
vwndData=cell(1,1);
shumData=cell(1,1);
k=length(filelist);
%读取位势高度场
for s = 1:k
ncid1 =[datadir,filelist(s).name];
hgtData{1,1} = ncread(ncid1,'hgt'); %读入变量 位势高度场
LonData{1,1} = ncread(ncid1,'lon'); %读入变量lon 经度
LatData{1,1}= ncread(ncid1,'lat'); %读入变量lat 纬度
levelData1{1,1}= ncread(ncid1,'level');%存放位势高度场、经向风、纬向风的层数
TimeData{1,1}= ncread(ncid1,'time');%存放位势高度场,比湿,风场的时次
%读取比湿场
ncid2 =[datadir,filelist(s).name];
shumData{1,1}= ncread(ncid2,'shum'); %读取比湿
levelData2{1,1}= ncread(ncid2,'level');%存放比湿的层数
%读取经向风
ncid3 =[datadir,filelist(s).name];
uwndData{1,1} = ncread(ncid3,'uwnd'); %读入变量 经向风
%读取纬向风
ncid4 =[datadir,filelist(s).name];
vwndData{1,1} = ncread(ncid4,'vwnd'); %读入变量 纬向风
%读取相对湿度
ncid5 = [datadir,filelist(s).name];
rhumDara{1,1} = ncread(ncid5,'rhum');%读取相对湿度
levelData3{1,1}= ncread(ncid5,'level');%存放比湿的层数
save('D:\\desktop\\data\\climateplot.mat','hgtData','shumData','uwndData','vwndData','LonData','LatData','hgtData','rhumData');%获取数据
end
%%
%获取需要的数据,2000年-2021年,5,6,7,8月,纬向风,比湿,经向风选取850hPa,位势高度选取200,500,850hPa,
%109°36′-111°29′,北纬24°15′-26 °23′E,
shumData1=cell(21,4);%建立指针 5-8月的比湿
rhumData = cell(21,4);%建立指针 5-8月的相对湿度
hgtData2001=cell(21,4);%建立指针 5-8月的200hPa位势高度场
hgtData5001=cell(21,4);%建立指针 5-8月的500hPa位势高度场
hgtData8501=cell(21,4);%建立指针 5-8月的850hPa位势高度场
uwndData1=cell(21,4);%建立指针 5-8月的经向风
vwndData1=cell(21,4);%建立指针 5-8月的纬向风
k=529:12:872;%表示从2000.5-2020.8
for m=1:21
for n=1:4
shumData1{m,n}=squeeze(shumData{1,1}(43:45,9:11,3,k(m)+(n-1)));%存取5\6\7\8月份比湿数据,3代表850hPa,109:111经度,24-26纬度
uwndData1{m,n}=squeeze(uwndData{1,1}(43:45,9:11,3,k(m)+(n-1)));%存取5\6\7\8月份经向风数据,3代表850hPa,109:111经度,24-26纬度
vwndData1{m,n}=squeeze(vwndData{1,1}(43:45,9:11,3,k(m)+(n-1)));%存取5\6\7\8月份纬向风数据,3代表850hPa,109:111经度,24-26纬度
rhumData{m,n}= squeeze(rhumData{1,1}(43:45,9:11,10,k(m)+(n-1)));%存取5\6\7\8月份相对湿度数据,3代表850hPa,109:111经度,24-26纬度
hgtData8501{m,n}=squeeze(hgtData{1,1}(43:45,9:11,3,k(m)+(n-1)));%850hPa位势高度
hgtData5001{m,n}=squeeze(hgtData{1,1}(43:45,9:11,6,k(m)+(n-1)));%500hPa位势高度
hgtData2001{m,n}=squeeze(hgtData{1,1}(43:45,9:11,10,k(m)+(n-1)));%200hPa位势高度
end
end
save('D:\\desktop\\data\\climateHC.mat','hgtData2001','shumData1','uwndData1','vwndData1','hgtData5001','hgtData8501','rhumData');%获取数据
运行结果及报错内容
filelist读取不出来,54行位置1处索引超出数组边界
我的解答思路和尝试过的方法
我尝试使用单个读取模型,不采用批量读取文件可解决filelist读取不出的错误。但是在经纬度和时间限制下提取还是出现索引报错
我想要达到的结果
成功准确的提取出影响因子并保存
数据链接:https://www.aliyundrive.com/s/vrYRDKmXumX