(1)先声明下,关于nc的一些介绍引用了文章,这是读取数据需要首先学习的东西

(2)里面的代码适用于matlab2010a及后面的版本,前面的版本需要安装插件

(3)现在将代码添加在后面,附近中是具体的文档

%This program is use for extracting the data in the form of nc

%The version of the matlab is 2010a and it may not be use for other versions

%your data will be extracted

filepath='E:work气候情景AR4HADCM3_SRA1B_pr_c30b';

fiename='HADCM3_SRA1B_1_pr_2070-2099.nc';

file=strcat(filepath,fiename);

%*****************reading*************************

ncid=netcdf.open(file,'nc_nowrite');

[ndims,nvars,ngatts,unlimdimid]=netcdf.inq(ncid); % 返回nc和cdf文件的信息,其中ndims为维度信息,nvars为变量个数信息,ngatts和unlimdimid为整体特征;

%下面是获取每个维度(维度个数为ndims)的名称和长度

names_lens=cell(ndims,2);

for i=0:ndims-1

[dimname,dimlen]=netcdf.inqDim(ncid,i); % 查询ndims中维度的名称和资料长度,包含0~ndims-1的维度特征; dimid=0

names_lens{i+1,1}=dimname;

names_lens{i+1,2}=dimlen;

end

%下面是查询每个变量的属性特征

var_inform=cell(nvars,6);

for j=0:nvars-1

[varname,xtype,dimids,natts] = netcdf.inqVar(ncid,j); %查询nvars中名称和资料维度,包含0~nvars-1个变量特征;

var_inform{j+1,1}=varname; %变量名称

var_inform{j+1,2}=xtype; %数据类型

var_inform{j+1,3}=dimids; %维度信息

var_inform{j+1,4}=natts;%通过varid识别的属性个数

attnames=cell(1,natts);

attvals=cell(1,natts);

for m=0:natts-1

attname=netcdf.inqAttName(ncid,j,m); %获取各变量的属性名

attval = netcdf.getAtt(ncid,j,attname);%获取各变量各属性名对应的属性值

attnames{1,m+1}=attname;

attvals{1,m+1}=attval;

end

att_names_vals=[attnames;attvals];

var_inform{j+1,5}=netcdf.inqVarID(ncid,varname);% 返回查询变量varname 在nc和cdf文件中的nvars的位置,是变量的代号;

var_inform{j+1,6}=att_names_vals;

end

%下面是提取每个变量的具体数据

var_data=var_inform(:,[1,5]);

for k=1:nvars

var_data{k,3}= netcdf.getVar(ncid,var_data{k,2}); % 获取变量;返回具体变量的具体内容(开始度。。。结尾度)

end

netcdf.close(ncid);

%下面是提取降雨数据的具体方式(我自己用)

%Pcp_Jan=roundn(flipud(var_data{7,3}(:,:,1)')*86400,-3);%需要经度为横坐标,纬度为纵坐标,所以矩阵翻转;需要得到单位是mm/day.所有需要乘以86400(原来单位是kg/m^2/s;

h = waitbar(0,'Please wait...','name','running');

pcp_month=cell(1,12);

for time=1:12

%%%%%%%%%%%添加进度条

if time==12

waitbar(time/12,h,'finished');

pause(1);

delete(h);

else

waitbar(time/12,h,strcat(num2str(round((time/12)*100)),'%'));

end

%%%%%%%%%%%添加进度条

pcp_month{time}=roundn(flipud(var_data{7,3}(:,:,time)')*86400,-3);

xlswrite('HADCM3_SRA1B_1_pr_2070-2099.xls',Pcp_Jan,strcat('month',num2str(time)));

end

%其他人可能用到的方式

%start=[0,0,0]; %起点位置

%count=[96,73,1]; %向后计数

%Pcp_Jan=flipud(netcdf.getVar(ncid,6,start,count)');

转载本文请联系原作者获取授权,同时请注明本文来自张凌科学网博客。

链接地址:http://blog.sciencenet.cn/blog-922140-716555.html

上一篇:grb文件的读取 (更新)

下一篇:服务于IPCC 第四次报告(AR4)的气候情景简介

matlab读取nc数据的某一列数据库,科学网—.nc数据读取详细资料matlab2010a及后面的版本 - 张凌的博文...相关推荐

  1. python爬虫实现股票数据存储_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储!...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  2. mysql数据库函数转义函数_MySql数据库-查询、插入数据时转义函数的使用

    最近在看一部php的基础视频教程,在做案例的时,当通过用户名查询用户信息的时候,先使用了转义函数对客户提交的内容进行过滤之后再交给sql语句进行后续的操作.虽然能看到转义函数本身的作用,但是仍然有一些 ...

  3. nodejs操作mysql查询返回的数据_nodejs连接mysql进行数据库查询返回前台数据的坑...

    之前本来想用mongodb进行数据库的操作,后来一想自己之前简单的用过mysql,就直接使用了mysql,一下午的时间一直走在nodejs查询数据然后返回给前台的这个过程,怎么说呢,在这个过程遇到了两 ...

  4. ajax从数据库中查询获取数据,如何使用ajax从数据库获取正确的数据

    在我的项目中,我使用ajax从数据库中获取数据.我测试数据内容,我选择alert(valData)成功函数.但不幸的是,没有从 ajax返回.我测试过如何使用ajax从数据库获取正确的数据 selec ...

  5. java sql 写入万条数据_如何快速向数据库插1000万数据?4种方法对比,它简单却速度最快

    目录 场景介绍 项目配置 Mybatis为什么慢? JdbcTemplate让我眼前一亮 原生JDBC就是快啊! 存储过程怎么样? 越简单越快 前言 一直有一种说法:批量插入大量数据到MySQL数据库 ...

  6. mysql怎样循环插入数据_你向 Mysql 数据库插入 100w 条数据用了多久?

    多线程插入(单表) 多线程插入(多表) 预处理SQL 多值插入SQL 事务(N条提交一次) 多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程快?同一时间对一个表的写操作不应该是独占的吗? ...

  7. mysql数据对比同步_跨数据库mysql语句同步数据和对比运算

    首先,A数据库[需要同步的数据库]A_product数据表[产品基本信息]product_id产品唯一IDprice产品价格A_product_option_value数据表[产品选项]product ...

  8. 达梦数据查询编码_从数据库到全栈数据解决方案,达梦不走捷径

    "世界上最快的捷径,就是不走捷径."--这句名言在达梦公司二十年的发展历程中体现的淋漓尽致. 四十年前,达梦公司董事长冯裕才还是华中科技大学一名教师,在一次偶然的学习机会中,目睹了 ...

  9. sql server schema下拉不到存储过程_mysql数据库字符编码总结--数据存储编码

    概述 MySQL的字符编码结构比较细,它大方向分为两个部分:数据存储编码和数据传输编码. 内容比较多,下面先简单介绍下数据存储编码~ 01 编码层次 数据存储的字符编码配置是指定数据库中存储的数据默认 ...

  10. mysql如何快速插入一千万条数据_如何快速安全的插入千万条数据?

    最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半小时内入库. 思路 1.估算文件大小 因为告诉文件有千万条,同时每条记录大概 ...

最新文章

  1. SSL 数字证书助力电子商务,让您网络购物更安心
  2. verilog基础篇--常用的信号生成模块
  3. 反射 + 抽象工厂模式切换不同的实现方法
  4. Qt文档阅读笔记-ToolBar QML Type
  5. 数据库连接和乱码问题
  6. perl socket初步
  7. 树莓派4B之Windows XP系统安装游戏(二)
  8. bias tee电路设计-电容电感值
  9. 智能性与实用性兼具,华为开启智能眼镜全民时代
  10. 以太网卡支持的工作模式
  11. jupyter notebook 实用快捷键大全
  12. linux服务器用lighttpd+mysql5+php5+SupeSite/X-Space+discuz构建社区门户
  13. 上海亚商投顾:沪指逼近2900点 两市超4500股飘绿
  14. simulink 储能AGC二次调频,储能采用下垂控制,自适应控制,系统其他机组为水电机组和风电机组,储能出力受ACE变化改变。
  15. ssh设置免密登录后登录仍需密码可能的原因,以及 ssh 出问题或的调试方法
  16. 树莓派魔镜项目——笔记二 Docker软件安装
  17. 广州尔码喻晓马全面深入阐释:何为大数据
  18. 国外一些好用的UX/UI设计工具和资源介绍
  19. 区块链重构零售价值体系 | 苏宁区块链技术应用论坛
  20. AutoCAD学习笔记——基本操作1

热门文章

  1. 1.Cookie和Session
  2. 《美好企业》导读:企业家需要超越世俗的成功
  3. linux端口健康检查,Smartmontools检查在Linux上的硬盘健康状况 | MOS86
  4. 杂谈:微信为什么不出小号功能?
  5. 最新TIOBE编程语言排行:C语言第一,Python反超Java,挤进第二
  6. 最新版cleanmymac4.11.3专业的Mac清理软件
  7. springboot大学生就业规划系统毕业设计-附源码191451
  8. 信息安全管理——仿射密码破解
  9. MongoDB实战-分片概念和原理
  10. 大学到底教会了我们什么?