NetCDF 格式小试一

最近需要跨平台使用同一组原始数据,研究了下Matlab本身的.mat格式,HDF5 还有就是NetCDF4。
其实NetCDF4就是一个多自变量的单值函数。用公式来说就是f(x,y,z,...)=value, x,y,z等在netCDF中叫做维(dimension),函数值value在NetCDF中叫做变量(Variables). 而计量单位(量纲)叫属性(Attributes)。以下为我的Matlab范例。

%使用matlab原生支持命令创建nc文件范例
%2015-11-15

%% 1创建nc文件
% cid = netcdf.create(filename, mode)
% mode:
% 'NC_NOCLOBBER':                Prevent overwriting of existing file with the same name.
% 'NC_SHARE':                        Allow synchronous file updates.
% 'NC_64BIT_OFFSET':        Allow easier creation of files and variables which are larger than two gigabytes.

ncid = netcdf.create('week01.nc','NC_NOCLOBBER')

%% 2定义Dimension
% dimid = netcdf.defDim(ncid,dimname,dimlen)
timedimID = netcdf.defDim(ncid,'time',292366);


%% 3.定义变量:
% varid = netcdf.defVar(ncid,varname,xtype,dimids)
I_p1_kal_ID = netcdf.defVar(ncid,'I_p1_kal','double',[timedimID]);
I_p2_kal_ID = netcdf.defVar(ncid,'I_p2_kal','double',[timedimID]);
P_p1_kal_ID = netcdf.defVar(ncid,'P_p1_kal','double',[timedimID]);
P_p2_kal_ID = netcdf.defVar(ncid,'P_p2_kal','double',[timedimID]);
V_p1_kal_ID = netcdf.defVar(ncid,'V_p1_kal','double',[timedimID]);
V_p2_kal_ID = netcdf.defVar(ncid,'V_p2_kal','double',[timedimID]);
pin_kal_ID =  netcdf.defVar(ncid,'pin_kal','double',  [timedimID]);
pout_kal_ID = netcdf.defVar(ncid,'pout_kal','double',[timedimID]);
q_kal_ID    = netcdf.defVar(ncid,'q_kal','double',   [timedimID]);
time_kal_ID = netcdf.defVar(ncid,'time_kal','double',[timedimID]);
w_p1_kal_ID = netcdf.defVar(ncid,'w_p1_kal','double',[timedimID]);
w_p2_kal_ID = netcdf.defVar(ncid,'w_p2_kal','double',[timedimID]);

%% 4 完成netCDF文件定义模式
netcdf.endDef(ncid)


%% 5 把数据写到netcdf的文件中
% netcdf.putVar(ncid,varid,data)
% netcdf.putVar(ncid,varid,start,data)
% netcdf.putVar(ncid,varid,start,count,data)
% netcdf.putVar(ncid,varid,start,count,stride,data)
netcdf.putVar(ncid,I_p1_kal_ID,I_p1_kal);
netcdf.putVar(ncid,I_p2_kal_ID,I_p2_kal);
netcdf.putVar(ncid,P_p1_kal_ID,P_p1_kal);
netcdf.putVar(ncid,P_p2_kal_ID,P_p2_kal);
netcdf.putVar(ncid,V_p1_kal_ID,V_p1_kal);
netcdf.putVar(ncid,V_p2_kal_ID,V_p2_kal);
netcdf.putVar(ncid,pin_kal_ID, pin_kal);
netcdf.putVar(ncid,pout_kal_ID,pout_kal);
netcdf.putVar(ncid,q_kal_ID,   q_kal);
netcdf.putVar(ncid,time_kal_ID,time_kal);
netcdf.putVar(ncid,w_p1_kal_ID,w_p1_kal);
netcdf.putVar(ncid,w_p2_kal_ID,w_p2_kal);


%% 6 关闭文件
netcdf.close(ncid);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容