加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

MATLAB--nc文件的读取及二进制文件的输出

(2019-05-20 09:26:34)
分类: MATLAB

NCEP:

clc;         %清屏

clear all;   %清空

%nc批量读取的数据

datadir1='D:\data\ncep_monthly\pressure\';                                                    %指定批量数据所在的文件夹

filelist1=dir([datadir1,'air.mon.mean.nc']);                      %指定批量数据的类型

minlat=-90;maxlat=90;minlon=0;maxlon=357.5;


filename1=[datadir1,filelist1.name];

ncid1=netcdf.open(filename1,'NC_NOWRITE');                                 %打开nc文件                                 

lat=ncread(filename1,'lat');                                         %读入变量lat

lon=ncread(filename1,'lon');                                        %读入变量lon

la=find((lat<=maxlat)&(lat>=minlat));

lo=find((lon<=maxlon)&(lon>=minlon));

latitude=lat(la,:);

longitude=lon(lo,:);

t_1= ncread(filename1,'air');

t(:,:,:,:)=t_1(lo,la,1:12,:);

netcdf.close(ncid1);                                                      %关闭nc文件

 

fileID1=fopen('airtemp.bin','w');

fwrite(fileID1,t,'single');

fclose(fileID1);

 

 

ECMWF:

clc;         %清屏

clear all;   %清空datadir1='D:\sunxy\data\1979-201805_monthly_nc\1\';        %指定批量数据所在的文件夹

filelist1=dir([datadir1,'sounding*.nc']);                      %指定批量数据的类型

k1=length(filelist1);

% 读取数据

minlat=-90;maxlat=90;minlon=0;maxlon=360;

n=1;

for s=1:k1

  filename=[datadir1,filelist1(s).name];

  ncid=netcdf.open(filename,'NC_NOWRITE');                                 %打开nc文件         

 

  lat=ncread(filename,'latitude');                                         %读入变量lat

  lon=ncread(filename,'longitude');                                        %读入变量lon

  time=ncread(filename,'time');

  l=length(time);

  la=find((lat<=maxlat)&(lat>=minlat));

  lo=find((lon<=maxlon)&(lon>=minlon));

  latitude=lat(la,:);

  longitude=lon(lo,:);

 

w_1= ncread(filename,'w');

w(:,:,:,n:n+l-1)=w_1(lo,la,37:-1:11,:);

  netcdf.close(ncid);                                                      %关闭nc文件

  n=n+l

  t_1=[];

end;

 

fileID5=fopen('D:\sunxy\study\Q1Q2\Fortran热源\glo\1\omega.bin','w');

fwrite(fileID5,w,'single');

fclose(fileID5)

 

注意:用MATLAB读取ECMWF文件,气压层会倒置。


1. 输出成txt
fid=fopen(strcat('I:\D\两湖地区\模拟结果\站点气象场\corr_for_tylor.txt'),'w');  %需要改文件名称的地方
[mm,nn]=size(corr);
for im=1:mm
for in=1:nn
     if in==nn
         fprintf(fid,'%g\n',corr(im,in));
         else
         fprintf(fid,'%g\t',corr(im,in));
         end
end 
end 
fclose(fid);

注:若\n换行失败,可换成\r\n

fprint的一些参数
\t  tab键,水平制表符
\n  生成新行
\r  回车

%d  整数
%e  实数:科学计数法
%f   实数:小数形式
%g  更紧凑的数字形式,无尾随0
%s  输出字符串

2. 输出成csv
csvwrite(strcat('meteo_',num2str(iyear),'-,station{istation},'.csv'),city_data);

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有