最近需要跨平臺使用同一組原始數(shù)據(jù),研究了下Matlab本身的.mat格式,HDF5 還有就是NetCDF4畸颅。
其實(shí)NetCDF4就是一個(gè)多自變量的單值函數(shù)趣斤。用公式來說就是f(x,y,z,...)=value, x,y,z等在netCDF中叫做維(dimension),函數(shù)值value在NetCDF中叫做變量(Variables). 而計(jì)量單位(量綱)叫屬性(Attributes)绣夺。以下為我的Matlab范例吏奸。
%使用matlab原生支持命令創(chuàng)建nc文件范例
%2015-11-15
%% 1創(chuàng)建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 把數(shù)據(jù)寫到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 關(guān)閉文件
netcdf.close(ncid);