📄 read_data_nc.m
字号:
% 程序的主要目的是将一个海平面气压数据05_0819_0822.nc转成ascii数据文件,
% 写成的ascii通常都比较大,如果我们并不需要这个ascii文件,而只想对数据进行处理或绘图,
% 则本程序只需到第8或第15行,即可直接对slp1或slp2进行所要的计算或绘图或输出计算后的其他结果等。
% 其他nc文件可类似处理
clear all;close all;clc
%--------------------------------------------------------------------------
f=netcdf('05_0819_0822.nc','nowrite');% open the nc file., 注意有的nc文件后缀不是为.nc而是.cdf, 若要读取多个nc文件,可在filename上设循环.
slp1=f{'slp'}(:); % 获取要从nc文件中提取的变量slp
close(f)
%--------------------------------------------------------------------------
[dk di dj]=size(slp1); %获取该变量的维数本例为3维
fid=fopen('05_0819_0822.dat','w'); % 打开一个文件,用于存储变量数据
for kk=1:dk %该循环用于将原来3维的数据销至2维,写到05_0819_0822.dat上.
slp2=squeeze(slp1(kk,:,:))+119765;
%-------------------------------------------------------------------------
%注意,有的nc数据为方便存储,故在实际数据的基础上进行了一些换算(不是所有的nc都有这种换算)
%数据还原换算公式是: 实际数据=nc数据*scale_factor+add_offset.
%scale_factor和add_offset的数值可以从ncbrower得到(具体见readme_nc.txt).
%或在命令窗口中输入ncdump,打开nc文件,据matlab窗口显示可知;
%本数据的scale_factor和add_offset分别为1和119765.
%-------------------------------------------------------------------------
for ii=1:di
fprintf(fid,'%6d ',slp2(ii,:));
fprintf(fid,'\n'); %换行
end
fprintf(fid,'\n'); %不同的kk之间用一个空行隔开,如无需空行,可删去此行
end
fclose(fid)
fclose all
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -