莫失莫忘- 2022-01-22 16:14 采纳率: 100%
浏览 606
已结题

批量读取nc文件,并限制经纬度和时间提取需要是降水影响因子。

问题遇到的现象和发生背景

使用批量读取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

  • 写回答

2条回答 默认 最新

  • 有问必答小助手 2022-01-24 15:06
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


    因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月1日
  • 已采纳回答 1月24日
  • 创建了问题 1月22日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!