- 积分
- 2005
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2016-4-7
- 最后登录
- 1970-1-1
|
发表于 2018-4-21 16:10:13
|
显示全部楼层
楼主你好,我按照你的分享结合自己的修改了一下,出现了错误,但我不会改,求指点。我是菜鸟,新新手。麻烦了。
代码如下,出错显示随后:
- clear all
- clc
- %定义输入目录
- inputdir = 'D:/matlabht/pdsi0505';
- %定义输出目录
- outputdir = 'D:/matlabht/pdsi';
- %获取目录下所有nc文件的信息
- inputfiles = dir([inputdir , '/', '*.nc']);
- outfile = (['pdsi199101_201412.nc']);%定义输出的nc文件的文件名
- outdirfile = [outputdir '/' outfile];%输出路径
- outid = netcdf.create(outdirfile,'NC_NOCLOBBER');%创建nc文件
- latdimID = netcdf.defDim(outid,'lat',360);%创建维度及维数
- londimID = netcdf.defDim(outid,'lon',720);%同理
- timedimID = netcdf.defDim(outid,'time',1380);%同
- latid = netcdf.defVar(outid,'lat','double',latdimID);%定义变量,变量名等。
- lonid = netcdf.defVar(outid,'lon','double',londimID);
- timeid = netcdf.defVar(outid,'time','int',timedimID);
- pdsiid = netcdf.defVar(outid,'pdsi','double',[londimID,latdimID,timedimID]);
- netcdf.endDef(outid);%定义结束
- for ifiles = 1:length(inputfiles) %length(inputfiles)是获取inputfiles的长度,就是nc文件的数目
- infile = inputfiles(ifiles).name;%获取nc文件名
- varName = infile(11:14);%把文件名的pdsi赋值给varname
- indirfile = [inputdir '/' inputfiles(ifiles).name];%获取nc文件的完整路径
- time = ncread(indirfile,'time');%读取时间变量
- Ti=size(time);%获取时间变量的尺度
- lon = ncread(indirfile,'lon');%读取经度
- lat = ncread(indirfile,'lat');%读取纬度
- pdsi = ncread(indirfile,'pdsi');
- pdsi = double(pdsi);
- netcdf.putVar(outid,latid,lat);%将值赋给变量
- netcdf.putVar(outid,lonid,lon);
- netcdf.putVar(outid,timeid,time);
- netcdf.putVar(outid,pdsiid,pdsi);
- netcdf.reDef(outid);%赋值结束
- netcdf.putAtt(outid,latid,'long_name','latitude');%对变量的说明
- netcdf.putAtt(outid,latid,'units','degrees_north');
- netcdf.putAtt(outid,latid,'standard_name','latitude');
- netcdf.putAtt(outid,lonid,'long_name','longitude');
- netcdf.putAtt(outid,lonid,'units','degrees_east');
- netcdf.putAtt(outid,lonid,'standard_name','longitude');
- netcdf.putAtt(outid,timeid,'long_name','time');
- netcdf.putAtt(outid,timeid,'units','hours since 1900-01-01 00:00:00');
- netcdf.putAtt(outid,timeid,'standard_name','time');
-
- netcdf.putAtt(outid,shumid,'long_name','Air specific humidity');
- netcdf.putAtt(outid,shumid,'units','kg kg-1');
- netcdf.putAtt(outid,shumid,'_FillValue','-9.99e+33');
- netcdf.putAtt(outid,shumid,'missing_value','-9.99e+33');
- netcdf.close(outid);
- end
复制代码
错误命令行窗口
错误使用 netcdflib
无法使用指定的文件名创建文件。文件名可能包含不受支持的字符。
出错 netcdf.create (line 53)
ncid = netcdflib('create', filename, mode);
出错 humidity (line 11)
outid = netcdf.create(outdirfile,'NC_NOCLOBBER');%创建nc文件 |
|