MATLAB:netcdf的用法

MATLAB除了经常用的ncdisp,ncread,ncwrite以外,还有netcdf库程序包。
主要学习搬运ROMS tool里的native netcdf包。(ROMS tool里还有mexnc和Java版本的接口,但新版matlab原生接口就已经很好用啦)

nc变量重命名

% Fname        NetCDF file name  (string)
% Vname_old    Old variable name (string)
% Vname_new    New variable name (string)

% Open NetCDF file and get variable ID.
ncid  = netcdf.open(Fname, 'nc_write');    % 以WRITE模式打开nc文件
varid = netcdf.inqVarID(ncid, Vname_old);  % 获取原变量名,并记作varid

% Put file into define mode.
netcdf.reDef(ncid);                        % 进入定义模式,可以添加或重命名维度、变量和属性,也可删除属性  

% Rename variable.
netcdf.renameVar(ncid, varid, Vname_new);  % 将变量名更改为Vname_new

netcdf.endDef(ncid);                       % 退出定义模式(optional)
	
% Close NetCDF file.
netcdf.close(ncid);                        % 关闭netcdf文件	

举例:

>> ncdisp(Fname)
Source:
           F:\...\SRTM15.nc
Format:
           netcdf4
Global Attributes:
           ...
Dimensions:
           ...
Variables:
    lon
           ...
    lat
           ...
    z  
           Size:       86400x43200
           Dimensions: lon,lat
           Datatype:   single
           Attributes:
                       long_name    = 'z'
                       _FillValue   = NaN
                       actual_range = [-11058.001            8627]
>> Vname_old='z';
>> Vname_new='topo';
>> ncid  = netcdf.open(Fname, 'nc_write'); 
>> varid = netcdf.inqVarID(ncid, Vname_old);
>> netcdf.reDef(ncid);  
>> netcdf.renameVar(ncid, varid, Vname_new); 
>> netcdf.endDef(ncid);
>> netcdf.close(ncid);
>> ncdisp(Fname)
Source:
           F:\...\SRTM15.nc
Format:
           netcdf4
Global Attributes:
           ...
Dimensions:
           ...
Variables:
    lon 
           ...
    lat 
           ...
    topo
           Size:       86400x43200
           Dimensions: lon,lat
           Datatype:   single
           Attributes:
                       long_name    = 'z'
                       _FillValue   = NaN
                       actual_range = [-11058.001            8627]
>>       

ROMStool/netcdf/nc_vrename 可以通过定义Fname、Vname_old、Vname_new,将“Fname”文件中Vname_old改成Vname_new,自动识别不同netcdf接口。


posted @ 2023-03-10 15:08  dan-chen  阅读(255)  评论(0编辑  收藏  举报