分类: WINDOWS
2006-04-22 23:30:07
netcdf插件安装和.nc格式数据的读取
――For Matlab in WindowsXP
从事海洋和大气专业的学习和研究时,可能需要从网上下载一些数据。其数据存储的格式五花八门,为了方便数据交换,统一的数据格式显得尤为重要。其中比较广泛使用的就是netcdf格式,通常后缀为.nc(也可能为.cdf)。作者在实际中用matlab处理了一些此类数据,简单说来就是安装一个插件即可。现将我们的方法具体地写出,以供参考。(Matlab插件(Version
(注:Netcdf forMatlab插件下载自)
一、netcdf 插件安装
1、将本netcdf文件夹考到一盘符上(最好在根目录下,位置醒目,防止当作普通文件夹删除),如f:\netcdf;
2、打开matlab,将工作目录设为netcdf文件夹。如netcdf文件夹放在f盘根目录下,就将matlab的当前路径设为f:\netcdf\install files;
3、运行install files文件夹里的mexcdf53_pcwin_install.m和netcdf_install.m;
4、进行第3步后,会在install files文件夹下产生两个文件夹,分别是mexcdf53_pcwin和netcdf;将mexcdf53_pcwin文件夹下的mexcdf53.dll和netcdf.dll文件考到C:\MATLAB6p5\bin及C:\MATLAB6p5\bin\win32目录下;
5、将第3步产生的netcdf及mexcdf53_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_factor和add_offset的数值可以从ncbrower(第1步)得到。
%或在命令窗口中输入ncdump,打开nc文件,据matlab窗口的显示可知.
4、文件夹example中提供了一个实例,数据为
三、netcdf数据的封装
如需要,我们也可以将ASCII数据封装成netcdf格式的数据。“.\其他”文件夹下提供了一个程序generate_nc_file.m,供参考。
还有很多方法可以读取netcdf格式的数据,如Fortran,GrADS等等,作者在这方面不了解,有兴趣的同学可以仔细研究。
以上纯属个人经验,可能还有很多内容未涉及。本guide的初批使用者为我们提供了一些有用的意见,使本guide更趋完善。
欢迎广大读者指正、交流。
QQ:70499425 53346592
文件:
netcdf.rar
大小:
486KB
下载:
下载
Swal bard2008-11-16 12:30:49
非常感谢这位兄台提供这么好的东西! 本人安装后,运行ncbrowser,试图打开某个nc文件,就出现了下面的情况: ??? Invalid MEX-file 'D:\MATLAB\R2007a\bin\mexcdf53.dll': 找不到指定的程序。 . Error in ==> ncmex at 139 [varargout{:}] = feval(fcn, varargin{:}); Error in ==> netcdf.open at 20 [theNCid, status] = ncmex('open', name(self), thePermission); Error in ==> netcdf.netcdf at 416 result = open(result, thePermission); Error in ==> ncbrowser.ncbrowser at 203 theNetCDF = netcdf(theNetCDFFile, thePermission); 请问应该怎么解决?请各位帮帮忙!感激不尽
Swal bard2008-11-16 12:30:49
非常感谢这位兄台提供这么好的东西! 本人安装后,运行ncbrowser,试图打开某个nc文件,就出现了下面的情况: ??? Invalid MEX-file 'D:\MATLAB\R2007a\bin\mexcdf53.dll': 找不到指定的程序。 . Error in ==> ncmex at 139 [varargout{:}] = feval(fcn, varargin{:}); Error in ==> netcdf.open at 20 [theNCid, status] = ncmex('open', name(self), thePermission); Error in ==> netcdf.netcdf at 416 result = open(result, thePermission); Error in ==> ncbrowser.ncbrowser at 203 theNetCDF = netcdf(theNetCDFFile, thePermission); 请问应该怎么解决?请各位帮帮忙!感激不尽
Swal bard2008-11-16 12:30:39
非常感谢这位兄台提供这么好的东西! 本人安装后,运行ncbrowser,试图打开某个nc文件,就出现了下面的情况: ??? Invalid MEX-file 'D:\MATLAB\R2007a\bin\mexcdf53.dll': 找不到指定的程序。 . Error in ==> ncmex at 139 [varargout{:}] = feval(fcn, varargin{:}); Error in ==> netcdf.open at 20 [theNCid, status] = ncmex('open', name(self), thePermission); Error in ==> netcdf.netcdf at 416 result = open(result, thePermission); Error in ==> ncbrowser.ncbrowser at 203 theNetCDF = netcdf(theNetCDFFile, thePermission); 请问应该怎么解决?请各位帮帮忙!感激不尽
Swal bard2008-11-16 12:30:39
非常感谢这位兄台提供这么好的东西! 本人安装后,运行ncbrowser,试图打开某个nc文件,就出现了下面的情况: ??? Invalid MEX-file 'D:\MATLAB\R2007a\bin\mexcdf53.dll': 找不到指定的程序。 . Error in ==> ncmex at 139 [varargout{:}] = feval(fcn, varargin{:}); Error in ==> netcdf.open at 20 [theNCid, status] = ncmex('open', name(self), thePermission); Error in ==> netcdf.netcdf at 416 result = open(result, thePermission); Error in ==> ncbrowser.ncbrowser at 203 theNetCDF = netcdf(theNetCDFFile, thePermission); 请问应该怎么解决?请各位帮帮忙!感激不尽
chinaunix网友2008-09-07 16:41:18
nc文件中变量是四维 hgt=nc{'hgt'}(:,:,:,:); 怎么取出某一时次某一层的数据呢?比如第二层,第五时次: hgt1=hgt(5,2,:,:);数据不对,工作区看是四维数组,应该是2维的