观测和旧模拟值计算

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
file_obs="isop_obs7.csv"
file_sim="oldisopsim.csv"  ;"isop_sim7.csv"

lines_obs=asciiread(file_obs,-1,"string")
lines_sim=asciiread(file_sim,-1,"string")
delim="," ;分隔符

AVG0=new(10,float)
AVG=new(10,float)
R=new(10,float)
MAE=new(10,float)
RMSE=new(10,float)
IOA=new(10,float)
do i=1,10
time=tofloat(str_get_field(lines_obs,1,delim))
tmp1=str_get_field(lines_obs,i+1,delim)
tmp2=str_get_field(lines_sim,i+1,delim)
tmp1@_Fillvalue="-999"
do j=0,dimsizes(tmp2)-1
   if (tmp1(j) .eq. "-999") then   
      tmp2(j)=""
      tmp1(j)=""
   end if
end do

var_sim=tofloat(tmp2)  ;先提取字符串再转换成 float类型
var_obs=tofloat(tmp1)
iz=ind(.not.ismissing(var_obs))
if (.not.all(ismissing(iz))) then
   AVG0(i-1)=avg(var_obs(iz))
   AVG(i-1)=avg(var_sim(iz))
   R(i-1)=escorc(var_sim(iz),var_obs(iz))
   MAE(i-1)=avg(abs(var_sim(iz)-var_obs(iz)))
   RMSE(i-1)=sqrt(avg((var_sim(iz)-var_obs(iz))^2))
   IOA(i-1)=1-sum((var_sim(iz)-var_obs(iz))^2)/sum((abs(var_sim(iz)-AVG0(i-1))+abs(var_obs(iz)-AVG0(i-1)))^2)
end if
delete (iz)
end do
filename="统计.txt"
system("rm -rf "+ filename)
write_table(filename,"a",[/"AVGobs  AVGsim  R  MAE  RMSE  IOA"/],"%s  %s  %s  %s  %s  %s")
write_table(filename,"a",[/AVG0,AVG,R,MAE,RMSE,IOA/],"%8.2f  %8.2f  %8.2f  %8.2f  %8.2f  %8.2f")



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值