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

批量读取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条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

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

      悬赏问题

      • ¥15 postman测试正常,在代码运行报错
      • ¥15 关于#C语言#的问题,如何解决?
      • ¥20 Vs2017 Help Viewer2.3 问题
      • ¥35 基于嵌入式linux的日程管理软件
      • ¥50 如何将list字符串添加到CSV文件表头?
      • ¥15 关于#javascript#的问题:通过ajax实现的局部刷新 如何将项目打包
      • ¥15 海思uboot USB3.0无法识别
      • ¥15 无法调用库文件,自己可以找到,但编译时显示没有
      • ¥15 安装PyQt5的时候这里创建虚拟环境是哪里?具体是怎么的?能录个视频吗
      • ¥20 php程序设计题不会!求解答!