Chinaunix首页 | 论坛 | 博客
  • 博客访问: 401341
  • 博文数量: 77
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 770
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-09 16:46
文章分类
文章存档

2009年(2)

2007年(8)

2006年(67)

我的朋友

分类: WINDOWS

2006-04-22 23:30:07

netcdf插件安装和.nc格式数据的读取

――For Matlab in WindowsXP

从事海洋和大气专业的学习和研究时,可能需要从网上下载一些数据。其数据存储的格式五花八门,为了方便数据交换,统一的数据格式显得尤为重要。其中比较广泛使用的就是netcdf格式,通常后缀为.nc(也可能为.cdf)。作者在实际中用matlab处理了一些此类数据,简单说来就是安装一个插件即可。现将我们的方法具体地写出,以供参考。(Matlab插件(Version3.5.0)及示例程序见压缩包.\installfile\中)。

(注:Netcdf forMatlab插件下载自

一、netcdf 插件安装

1、将本netcdf文件夹考到一盘符上(最好在根目录下,位置醒目,防止当作普通文件夹删除),如f:\netcdf

2、打开matlab,将工作目录设为netcdf文件夹。如netcdf文件夹放在f盘根目录下,就将matlab的当前路径设为f:\netcdf\install files

3、运行install files文件夹里的mexcdf53_pcwin_install.mnetcdf_install.m

4、进行第3步后,会在install files文件夹下产生两个文件夹,分别是mexcdf53_pcwinnetcdf;将mexcdf53_pcwin文件夹下的mexcdf53.dllnetcdf.dll文件考到C:\MATLAB6p5\binC:\MATLAB6p5\bin\win32目录下;

5、将第3步产生的netcdfmexcdf53_pcwin文件夹及其子文件夹添加到搜索目录下。

具体步骤为:matlab主窗口下依次点击fileèset pathèadd with subfolders,选中f:\netcdf\install files文件夹,单击确定点击saveèclose,至此安装完成。

(注:对于matab6.1或更低版本的使用者,在进行第5步之前必须先将F:\netcdf\install file\netcdf\下的子文件夹名的‘@’符号删除(6.1版本好像在添加路径时不识别此符号))

二、nc格式数据文件的读取

1、在matlab命令窗口下键入ncbrowser,回车,打开要读取的nc文件,就可以出现一个界面。界面分三列,选中中间一列的某一变量,就可以通过点击第三列查看该变量的基本信息,包括变量名,单位等信息。选中变量后点击右下角的listing可将该变量在窗口中列出(数组很大时慎用,可能要耗费大量的时间),点击extrat则可将该变量输出到matlab workspace中(过程中可以修改输出的变量名),之后就可对该变量进行操作。

2、第1步中,一个ncbrowser命令只能打开一个nc文件进行读取、导出等,如果要对多个nc文件进行操作的话,可参考example中的程序read_data_nc.m

3、特别注意,有的nc数据为方便存储,在实际数据的基础上进行了一些换算(不是所有的nc都有这种换算),我们要把它还原回来。

    %数据还原换算公式是:实际数据 = nc数据 * scale_factor + add_offset

    %scale_factoradd_offset的数值可以从ncbrower(第1步)得到。

    %或在命令窗口中输入ncdump,打开nc文件,据matlab窗口的显示可知.

4、文件夹example中提供了一个实例,数据为058198226小时平均的海面气压。

三、netcdf数据的封装

如需要,我们也可以将ASCII数据封装成netcdf格式的数据。“.\其他文件夹下提供了一个程序generate_nc_file.m,供参考。

还有很多方法可以读取netcdf格式的数据,如FortranGrADS等等,作者在这方面不了解,有兴趣的同学可以仔细研究。

以上纯属个人经验,可能还有很多内容未涉及。本guide的初批使用者为我们提供了一些有用的意见,使本guide更趋完善。

欢迎广大读者指正、交流。                                                   

QQ70499425 53346592

                                                   

文件: netcdf.rar
大小: 486KB
下载: 下载

阅读(77990) | 评论(106) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-07-30 22:27:31

Garly,你好! 我在用netcdf的工具箱时遇到这样的问题:从nc文件中提取出变量如8*170*170的数组,var(8,:,:)都为0,而我在linux下查看var(8,:,:)不为0;nc文件是wrf的输出文件,文件大小为2.25G,格式为classic(及netcdf1),我把var的数据在linux下用ncdump print出来,保存为txt,在xp下导入matlab,发现var(1:7,:,:)的数据又是和txt一致的,在整个nc文件中有些变量都正常,有些(8,:,:)和(8,:,:,:)都是0.不知道是什么原因。我用的是R14,nc插件就是上面的附件! 你有没有遇到过相同的事? 有什么建议?感激不尽! ps.在linux下面有没有哪个matlab的nc插件可以推荐?我想试下在linux下用matlab读nc。 在linux下装了matlab(R14),但没有找到合适的nc插件或toolbox。试了ncx觉得不好用(不稳定,而且不认我的nc文件),mexnc setpath后好像也用不了。 现在用matlab读nc数据有问题,觉得挺头大的。

chinaunix网友2008-07-30 22:27:31

Garly,你好! 我在用netcdf的工具箱时遇到这样的问题:从nc文件中提取出变量如8*170*170的数组,var(8,:,:)都为0,而我在linux下查看var(8,:,:)不为0;nc文件是wrf的输出文件,文件大小为2.25G,格式为classic(及netcdf1),我把var的数据在linux下用ncdump print出来,保存为txt,在xp下导入matlab,发现var(1:7,:,:)的数据又是和txt一致的,在整个nc文件中有些变量都正常,有些(8,:,:)和(8,:,:,:)都是0.不知道是什么原因。我用的是R14,nc插件就是上面的附件! 你有没有遇到过相同的事? 有什么建议?感激不尽! ps.在linux下面有没有哪个matlab的nc插件可以推荐?我想试下在linux下用matlab读nc。 在linux下装了matlab(R14),但没有找到合适的nc插件或toolbox。试了ncx觉得不好用(不稳定,而且不认我的nc文件),mexnc setpath后好像也用不了。 现在用matlab读nc数据有问题,觉得挺头大的。

nuistlq2008-06-03 17:43:33

谢谢Garly为我们提供非常有用的附件 我按照你的方法安装好了netcdf 但是打开nc数据出现以下错误 Garly ## NCBrowser is a work-in-progress. ## Not all menu items are implemented. ## See "help ncbrowser". ??? Error using ==> class Not a known object type. Error in ==> f:\netcdf\install\netcdf\ncitem\ncitem.m On line 73 ==> result = class(theStruct, 'ncitem'); Error in ==> f:\netcdf\install\netcdf\netcdf\netcdf.m On line 409 ==> result = class(theStruct, 'netcdf', ncitem(theFilename)); Error in ==> f:\netcdf\install\n

nuistlq2008-06-03 17:43:33

谢谢Garly为我们提供非常有用的附件 我按照你的方法安装好了netcdf 但是打开nc数据出现以下错误 Garly ## NCBrowser is a work-in-progress. ## Not all menu items are implemented. ## See "help ncbrowser". ??? Error using ==> class Not a known object type. Error in ==> f:\netcdf\install\netcdf\ncitem\ncitem.m On line 73 ==> result = class(theStruct, 'ncitem'); Error in ==> f:\netcdf\install\netcdf\netcdf\netcdf.m On line 409 ==> result = class(theStruct, 'netcdf', ncitem(theFilename)); Error in ==> f:\netcdf\install\n

chinaunix网友2008-06-02 10:12:58

请问生成nc数据时,,add_offset 和Scale_factor的具体数值,怎么得到? 有相关函数么?还是自己计算?