| 
 
	积分2012贡献 精华在线时间 小时注册时间2016-4-7最后登录1970-1-1 
 | 
 
| 
想把文件夹里的三个nc文件全部读入到一个新建的nc文件中,出现了错误,求指教!错误如下所示
x
登录后查看更多精彩内容~您需要 登录 才可以下载或查看,没有帐号?立即注册 
  错误使用 netcdflib
 无法使用指定的文件名创建文件。文件名可能包含不受支持的字符。
 
 出错 netcdf.create (line 53)
 ncid = netcdflib('create', filename, mode);
 
 出错 humidity (line 11)
 outid = netcdf.create(outdirfile,'NC_NOCLOBBER');%创建nc文件
 代码如下
 
 
 复制代码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,pdsiid,'long_name','Palmer Drought Severity Index');
    netcdf.putAtt(outid,pdsiid,'units','mm');
    netcdf.putAtt(outid,pdsiid,'_FillValue','-9.99e+33');
    netcdf.putAtt(outid,pdsiid,'missing_value','-9.99e+33');
    netcdf.close(outid);
end
 
 
 | 
 |