爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 204633|回复: 360

[源程序] 【原创+整合版】matlab批量读取nc文件

  [复制链接]

新浪微博达人勋

发表于 2012-12-25 12:09:16 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 kongfeng0824 于 2016-7-29 08:46 编辑

本帖子使用的MATLAB版本为2012b及以上。
读取单个nc文件的方法:
clc,clear;
ncid = netcdf.open('D:\precip.mon.1981-2010.ltm.nc','NOWRITE'); %打开nc文件
ncdisp('precip.mon.1981-2010.ltm.nc'); %在命令窗中显示nc文件的变量

PrecipData  = ncread('precip.mon.1981-2010.ltm.nc','precip'); %读入变量precip
TimeData  = ncread('precip.mon.1981-2010.ltm.nc','time'); %读入变量time
LonData  = ncread('precip.mon.1981-2010.ltm.nc','lon'); %读入变量lon
LatData  = ncread('precip.mon.1981-2010.ltm.nc','lat'); %读入变量lat
Valid_yr_countData  = ncread('precip.mon.1981-2010.ltm.nc','valid_yr_count'); %读入变量validprecip_yr_count
ClimatologyData  = ncread('precip.mon.1981-2010.ltm.nc','climatology_bounds'); %读入变量climatology_bounds

[X, Y] = meshgrid(LatData,LonData);
contourf(Y-180.0,X,PrecipData(:,:,9)); %画9月份等值面图
shading flat; %去掉等值线
colorbar('SouthOutside','Position',[0.142,0.03,0.75,0.04]); %添加颜色条 [左右,上下,长,宽]

load coast %加载全球海岸线,但是不显示出来
geoshow(lat,long); %显示出海岸线,lat和long是coast的属性
hold on;

set(gca,'LineWidth',1,'FontSize',10,'Ylim',[-90,90],'Xlim',[-180,180],'Position',[0.142,0.09,0.75,0.84]...
   ,'XTick',[-180:60:180],'XTicklabel',{'-180W','-120W','-60W','0','60E','120E','180E'}...
   ,'YTick',[-90:30:90],'YTicklabel',{'-90S','-60S','-30S','0','30N','60N','90N'}); %添加经纬度信息
hold off;

netcdf.close(ncid); %关闭nc文件



批量读取nc文件的方法:
clc;  %清屏
clear; %清空
datadir='D:\data\降水数据\CPC Unified Gauge-Based Analysis of Daily Precipitation over CONUS\'; %指定批量数据所在的文件夹
filelist=dir([datadir,'*.nc']); %指定批量数据的类型
a=filelist(1).name; %查看你要读取的文件的编号。filelist(1).name在window下为第一个标号数据
b=filelist(2).name; %查看你要读取的文件的编号。filelist(2).name在window下为第二个标号数据
k=length(filelist);
for s=1:k
  filename=[datadir,filelist(s).name];
  ncid=netcdf.open(filename,'NC_NOWRITE');
  ncdisp('D:\data\降水数据\CPC Unified Gauge-Based Analysis of Daily Precipitation over CONUS\precip.V1.0.1948.nc'); %在命令窗中显示nc文件的变量
  %任意取其中一个来看数据中所包含的变量特征,以为下面读取数据变量做铺垫
  % ncid = netcdf.open('D:\data\降水数据\CPC Unified Gauge-Based Analysis of Daily Precipitation over CONUS\precip.V1.0.1948.nc','NOWRITE'); %打开nc文件
  % ncdisp('D:\data\降水数据\CPC Unified Gauge-Based Analysis of Daily Precipitation over CONUS\precip.V1.0.1948.nc'); %在命令窗中显示nc文件的变量
  PrecipData  = ncread(filename,'precip'); %读入变量precip
  TimeData  = ncread(filename,'time'); %读入变量time
  LonData  = ncread(filename,'lon'); %读入变量lon
  LatData  = ncread(filename,'lat'); %读入变量lat
  netcdf.close(ncid);   % 关闭文件
end;

敬请大家批评指正,并在此基础上丰富内容

评分

参与人数 18金钱 +85 贡献 +11 收起 理由
樱桃瘦肉丸子 + 1 楼主给力,爱你~
溢彩 + 1 很给力!
zddouc + 5
In_刘小苗 + 2 赞一个!
canghaiyimi + 1 赞一个!
lyclimate + 1
xuhmgao + 2
故乡月(环) + 1 很给力!
586357162 + 1 很给力!
年华盛宴 + 2 很给力!
shirly + 10 赞一个!
fgrace + 1 很给力!
wlzhongouc + 16 + 2 赞一个!
水心月儿 + 1 很给力!
阿华田 + 10 + 2 赞一个!
topmad + 10 + 2
mofangbao + 10 + 3 赞一个!
Aires + 10 + 2

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-5-10 15:41:13 | 显示全部楼层
请问我提取后工作区里的参数只有一个文件的数据,其他文件的数据该怎么看。
捕获.PNG
密码修改失败请联系微信:mofangbao
回复 支持 5 反对 0

使用道具 举报

新浪微博达人勋

发表于 2017-3-15 09:10:44 | 显示全部楼层
丹丹快乐023 发表于 2016-6-27 12:10
我按照批量处理老是得到“索引超出矩阵维度”的错误是怎么回事呀@楼主和大神们

我也是这个问题 请问你解决了吗?谢谢
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2016-10-13 09:05:15 | 显示全部楼层
清楚详细,非常感谢!
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2023-11-6 19:27:57 | 显示全部楼层
zvp 发表于 2015-5-10 15:41
请问我提取后工作区里的参数只有一个文件的数据,其他文件的数据该怎么看。

您好,请问您解决了嘛,我也遇到了这个问题
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-6-26 09:35:19 | 显示全部楼层

谢谢楼主的分享
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-5-20 20:19:09 | 显示全部楼层
谢谢分享
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2021-4-9 22:57:30 | 显示全部楼层
非常不错!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2019-12-3 18:22:15 | 显示全部楼层
谢谢楼主的分享
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-10-10 23:06:01 | 显示全部楼层
可以的 适合学习
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-9-16 09:44:50 | 显示全部楼层
zhang0329 发表于 2019-9-12 14:54
兄弟 你弄明白了 能讲一下这里么?

我后面也没找到其他辅助理解的参考文件。。然后按照自己大刀阔斧的理解,大概是:“a=filelist(1).name”就是把这个文件夹里头的第一个数据的数据名赋给a,以此来知道第几个文件是哪一个数据。 我模仿着实操的时候觉得这个语句在我们了解文件夹中的数据组成的时候是可以省略的。。  希望有帮到你
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-9-12 15:27:27 | 显示全部楼层
我的这个过程对么?为什么看Command Window 感觉像是一个文件跑了n回
360截图176106141008694.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-9-12 14:54:16 | 显示全部楼层
Vilinn 发表于 2019-5-1 22:49
请问有人能够帮忙详细解释一下a,b这两个变量的具体含义吗?光看楼主的注释我没怎么明白qwq  麻烦了!

兄弟 你弄明白了 能讲一下这里么?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表