登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 二爷名声在外 于 2014-8-24 15:57 编辑
各位大神: 小女子用noaa 的月平均海温资料sst.mean.nc时遇到了缺测值的问题,用matlab查看数据资料,显示缺测值标记为3.28e+04;下面是数据信息:
sst
Size: 360x180x655
Dimensions: lon,lat,time
Datatype: int16
Attributes:
unpacked_valid_range = [-5.00e+00 4.00e+01]
actual_range = [-2.80e+00 3.70e+01]
units = 'degC'
precision = 2
missing_value = 3.28e+04
_FillValue = 3.28e+04
long_name = 'Sea Surface Temperature Monthly Mean at Surface'
dataset = 'ICOADS 1-degree Enhanced'
var_desc = 'Sea Surface Temperature'
level_desc = 'Surface'
statistic = 'Mean'
parent_stat = 'Individual Obs'
add_offset = 323
scale_factor = 0.01
valid_range = [-3.28e+04 -2.83e+04]
>>
试图对数据中只要某点出现过一次缺测,那么则将该点所有时刻的数据都标记为NaN,但是运行发现并未将缺测值写为NAN,而是显示为32766,或者直接写成了0,这是为什么?(程序代码如下)
(查找之前的帖子发现,赋值NaN好像应该写成n_sst(n_sst==3.28+e04)=NaN;但是尝试后所有缺测值都标记为0,不知道原因何在?)
% 处理缺测值 for p=1:100 for q=1:40 for t=1:648 if n_sst(p,q,t)==3.28e+04||n_sst(p,q,t)==NaN %发现缺测值则标记为NaN n_sst(p,q,1:648)=NaN; else pass(p,q,t)=n_sst(p,q,t); %将有效数组赋给pass end end end end
for p=1:100 for q=1:40 for t=1:648 if n_sst(p,q,t)~=NaN sst(p,q,t)=double(n_sst(p,q,t))*factor_sst+offset_sst else r_havesst(p,q,1:638)=NaN; end end count=0; end end
|