使用CDO进行sfcWind数据归一化结果异常,求代码修正
CDO风速数据归一化代码修正
你当前的代码核心问题是归一化公式的分子分母搞反了。正确的归一化计算逻辑是 (原始数据 - 时间维度最小值) / (时间维度最大值 - 时间维度最小值),对应到你的步骤里,应该用B.nc(原始数据减最小值)除以A.nc(最大值减最小值),而非反过来。
修正后的代码
cdo timmax infil.nc Imax.nc cdo timmin infil.nc Imin.nc cdo sub Imax.nc Imin.nc A.nc # 计算时间维度最大值与最小值的差值 cdo sub infil.nc Imin.nc B.nc # 计算原始数据与时间维度最小值的差值 cdo div B.nc A.nc N_sfcWind.nc # 修正分子分母顺序,得到正确的归一化结果
优化方案(减少中间文件)
如果不想生成多余的中间NC文件,可以用CDO的管道命令一步完成:
cdo div -sub infil.nc -timmin infil.nc infil.nc -sub -timmax infil.nc infil.nc -timmin infil.nc infil.nc N_sfcWind.nc
或者拆成分步管道,可读性更好:
# 先预计算时间维度的最大最小值 cdo timmax infil.nc Imax.nc cdo timmin infil.nc Imin.nc # 一步完成归一化 cdo div -sub infil.nc Imin.nc -sub Imax.nc Imin.nc N_sfcWind.nc
内容的提问来源于stack exchange,提问作者Abid
相关产品推荐
相关产品推荐

