爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5808|回复: 1

matlab读取JRA-55数据(已解决)

[复制链接]

新浪微博达人勋

发表于 2018-8-3 15:45:41 | 显示全部楼层 |阅读模式
MATLAB
问题截图:
问题概况: read_grib读取JRA-55数据失败,显示输出参数太多。换种思路,更改数据格式为.nc,但是依旧读取失败。
我看过提问的智慧: 看过
自己思考时长(天): 2
系统平台: windows

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 小莹子 于 2020-1-15 21:52 编辑

JRA-55的数据格式为文件名.日期,是grib格式,依照论坛贴吧博客等经验,安装MinGW64编译器,安装read_grib插件,但是出现问题:
read_grib(gribname,'invent')
错误使用 fileparts
输出参数太多。

出错 read_grib (line 77)
[fpath,fname,fext,fver]=fileparts(gribname);

论坛上说fileparts只能输出3个返回值,可以删掉多余返回值,可是怎么删除那?


换种思路:将grib文件修改为nc文件,也方便自己后续处理。
1)在windows上直接添加后缀,显示文件可能会被破坏
ncFilePath='F:\MATLAB\JRA\anl_surf125.197901.nc';
ncid=netcdf.open(ncFilePath,'NC_NOWRITE');
ncdisp(ncFilePath,'lat');
lat=ncread(ncFilePath,'lat');

错误使用 netcdflib
无法打开文件。文件可能损坏或文件名可能包含无效字符。如果数据源为 OPeNDAP URL,请参阅 "用户指南" 中的 "OPeNDAP 故障排除" 部分。
出错 netcdf.open (line 59)
        [varargout{:}] = netcdflib ( 'open', filename, varargin{1} );

2)Linux上修改后缀为nc,在panoply工具中可以打开文件,但是matlab中依旧无法处理
错误使用 netcdflib
无法打开文件。文件可能损坏或文件名可能包含无效字符。如果数据源为 OPeNDAP URL,请参阅 "用户指南" 中的 "OPeNDAP 故障排除" 部分。
出错 netcdf.open (line 59)
        [varargout{:}] = netcdflib ( 'open', filename, varargin{1} );



解决方法:
在Linux上将grib数据转为nc数据,转化代码为:ncl_convert2nc

代码如下:
clc;        
clear all;
datadir='/data/JRA/anl_surf.nc/';
file=dir([datadir,'*.nc']);
%%
%插值为0.5*0.5分辨率
for i=1:length(file)
ncid=[datadir,file(i).name];
tem=ncread(ncid,'TMP_GDS4_HTGL_S123')-273.15;  %TMP_GDS4_HTGL_S123;PWAT_GDS4_EATM_S123kg m-2  RH_GDS4_HTGL_S123相对湿度;PRES_GDS4_SFC_S123表面压力
lat=ncread(ncid,'g4_lat_0');
lat=double(lat);
lon=ncread(ncid,'g4_lon_1');
lon=double(lon);
% time=ncread(ncid,'time');
Lat=double(lat(78:116,:));
Lon=double(lon(114:188,:));
T=tem(114:188,78:116);
T=double(T);
%插值为统一分辨率
% [X,Y]=meshgrid(Lat,Lon);
% [x,y]=meshgrid(20:0.5:45,70:0.5:105);
% vi=interp2(X,Y,T,x,y);
B(:,:,i)=T;
end
% b=B(:,:,1:480);
Ttb=reshape(B(:,:,13:480),[75 39 12 39]);
T0=reshape(mean(Ttb(:,:,1:12,:),3),[75 39 39]);%年平均
T2=reshape(mean(Ttb(:,:,6:8,:),3),[75 39 39]);%夏季平均
%冬季 1-12----3月-2月
T=reshape(B(:,:,15:482),[75 39 12 39]);
T4=reshape(mean(T(:,:,10:12,:),3),[75 39 39]);%冬季平均 %3月-2月

smean=mean(T0,3); %气候态平均
% %%
% %斜率
x=1980:1:2018;
k=size(T0,1);
for j =1:k
    y=T0(j,:);
    [a m b]=regression(x,y);
    m=m*10;
    M(:,j)=m;
end
    N=M';

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表