How can I convert NaN values to single -999 value
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Szabó-Takács Beáta
le 20 Juin 2017
Commenté : Szabó-Takács Beáta
le 20 Juin 2017
Dear Matlab Users,
I use R2015b Matlab. I tried to convert NaN data to -999 and convert the matrix which containes these -999 values to single by:
[ndata,Nest]=size(prC);
data=repmat(NaN,[ndata,nlon,nlat]);
for i=1:nlat
for j=1:nlon
[a1,a2]=min(sqrt((longitude2(i,j)-Struct1.Info.Location(:,1)).^2+(latitude2(i,j)-Struct1.Info.Location(:,2)).^2));
if a1<0.25
data(:,j,i)=prC(:,a2);
end
end
end
data(isnan(data))=single(-999);
pr = permute(data,[2,3,1]);
pr = single(pr);
but when I created netCDF file from these values by:
ncid1=netcdf.create('CM5A-MR_RCA4_dry_power1.nc','NC_NOCLOBBER');
>> londimid=netcdf.defDim(ncid1,'longitude',464);
>> latdimid=netcdf.defDim(ncid1,'latitude',201);
>> timedimid=netcdf.defDim(ncid1,'time',5479);
>> lon_varid=netcdf.defVar(ncid1,'longitude','float',londimid);
>> lat_varid=netcdf.defVar(ncid1,'latitude','float',latdimid);
>> time_varid=netcdf.defVar(ncid1,'time','double',timedimid);
>> pr_varid=netcdf.defVar(ncid1,'pr','float',[londimid latdimid timedimid]);
>> netcdf.endDef(ncid1);
>> netcdf.putVar(ncid1,lon_varid,lon);
>> netcdf.putVar(ncid1,lat_varid,lat);
>> netcdf.putVar(ncid1,time_varid,time);
>> netcdf.putVar(ncid1,pr_varid,pr);
>> netcdf.reDef(ncid1);
>> netcdf.putAtt(ncid1,0,'long_name','longitude');
>> netcdf.putAtt(ncid1,0,'standard_name','lon');
>> netcdf.putAtt(ncid1,0,'units','degrees_east');
>> netcdf.putAtt(ncid1,1,'long_name','latitude');
>> netcdf.putAtt(ncid1,1,'standard_name','lat');
>> netcdf.putAtt(ncid1,1,'units','degrees_north');
>> netcdf.putAtt(ncid1,2,'long_name','time');
>> netcdf.putAtt(ncid1,2,'standard_name','time');
>> netcdf.putAtt(ncid1,2,'units','days since 1949-12-1 00:00:00');
>> netcdf.putAtt(ncid1,3,'_FillValue',-999);
>> netcdf.putAtt(ncid1,3,'long_name','precipitation');
>> netcdf.putAtt(ncid1,3,'standard_name','precipitation');
>> netcdf.putAtt(ncid1,3,'units','mm');
>> netcdf.putAtt(ncid1,3,'cell_methods','time: mean');
netcdf.close(ncid1);
the _FillValue became double even though the pr is single (float). According to my best knowledge the missing values or _FillValues type has to be same as the variables (pr). How can I convert the NaN values to single _FillValue? Thank you for your help in advance! Beata
0 commentaires
Réponse acceptée
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur NetCDF dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!