clear all;close all;clc
ncdisp('e:\05_') % display the information of a netCDF file
slp1=ncread('e:\05_','slp');
[dk di dj]=size(slp1);  %获取该变量的维数本例为3维
fid=fopen('e:\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得到(具体见).
    %或在命令窗口中输入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
以上可以转换为二维数据
的nc文件数据是全球数据,我通过这个程序可以读出这个文件中的数据并保存在文本文档中,但是全球数据太多。我不想要这么多。我只要某个经纬度之间的数据就OK,请问如何改动这个程序让读出的数据位于某个经纬度之间呢?
程序如下:
% 程序的主要目的是将一个海平面气压数据05_转成ascii数据文件及绘图,
% 写成的ascii通常都比较大,如果我们并不需要这个ascii文件,而只想对数据进行处理或绘图,
% 其他nc文件可类似处理

clear all;close all;clc
%--------------------------------------------------------------------------
%--读取数据
f=netcdf('a_cgcm3_hly.tas_a1_commit_5_cgcm3.1_t47_');% open the nc file., 注意有的nc文件后缀不是为.nc而是.cdf, 若要读取多个nc文件,可在filename上设循环.
tas1=f{'tas'}(:);      % 获取要从nc文件中提取的变量vas
lon1=f{'lon'}(:);
lat1=f{'lat'}(:);
%scale_factor=f{'vas'}.scale_factor;
%add_offset=f{'vas'}.add_offset;
%vas_real = vas1*scale_factor(1)+add_offset(1);
vas_real = tas1;
close(f)
[dk di dj]=size(tas1);  %获取该变量的维数本例为3维
disp(dk);
disp(di);
disp(dj);
刘岩郎昆%-------------------------------------------------------------------------   
    %注意,有的nc数据为方便存储,故在实际数据的基础上进行了一些换算(不是所有的nc都有这种换算)
    %数据还原换算公式是:  实际数据=nc数据*scale_factor+add_offset. 
    %scale_factor和add_offset的数值可以从ncbrower得到(具体见).
    %或在命令窗口中输入ncdump,打开nc文件,据matlab窗口显示可知;
    %本数据的scale_factor和add_offset分别为1和119765.
%-------------------------------------------------------------------------   
%--------------------------------------------------------------------------
%-绘图
%for i = 1:dk
%    figure
%vas = squeeze(vas_real(i,:,:));
%contourf(lon,lat,vas);
%colorbar
%end
%--------------------------------------------------------------------------
%--存储成ascii文件
fid=fopen('','w');    % 打开一个文件,用于存储变量数据
for kk=1:dk            %该循环用于将原来3维的数据销至2维,写到05_0819_0822.dat上.
   
tas_write = squeeze(tas_real(kk,:,:));
    for ii=1:di
      fprintf(fid,'%6d ',tas_write(ii,:));
      fprintf(fid,'\n');    %换行
    end
      fprintf(fid,'\n');  %不同的kk之间用一个空行隔开,如无需空行,可删去此行
end
fclose(fid)
fclose all
ncdisp        Display contents of NetCDF file in Command Window
ncinfo        Return information about NetCDF file
ncread        Read data from variable in NetCDF file
无赖正义ncreadatt        Read attribute value from NetCDF file
ncwrite        Write data to NetCDF file
ncwriteatt        Write attribute to NetCDF file
ncwriteschema        Add NetCDF schema definitions to NetCDF file
创建NetCDF文件变量NCCREATE这一生还是你最好
ncdisp Display contents of NetCDF file in Command Window
在命令窗口中显示的内容ncdisp NetCDF文件
ncinfo Return information about NetCDF file
ncinfo NetCDF文件返回的信息
ncread Read data from variable in NetCDF file
ncread读取数据NetCDF文件变量
ncreadatt Read attribute value from NetCDF file
ncreadatt读取属性值从NetCDF文件
ncwrite Write data to NetCDF file
ncwrite NetCDF文件写数据雨的印记钢琴谱
ncwriteatt Write attribute to NetCDF file
ncwriteatt写NetCDF文件属性
龙遥
ncwriteschema Add NetCDF schema definitions to NetCDF file
ncwriteschema添加NetCDF模式定义为NetCDF文件
我也说一句