爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5581|回复: 2

[源代码] 自己编的PS评分程序

[复制链接]

新浪微博达人勋

发表于 2019-8-11 17:46:21 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
st为站点数,dd 为需评分次数

      
       program main
  integer st,dd
  parameter(st=108,dd=31)
       integer N0(dd),N1(dd),N2(dd),M(dd)
  character*8 stid(st)
  real ps(dd),str(st),str19(st,dd)
      
  



!    ---------------读 实况值 str(i)
        open(20,file='i:\gradszd\sx6\ps06.txt')
   
           do  i=1,st
                read(20,*)stid(i),str(i)
               
     enddo
      close(20)
  
  
!    ---------------读2019预报值 str19(i,j)

     open(20,file='i:\gradszd\sx6\ps201906.txt')

            do  i=1,108
         
    read(20,*)(str19(i,j),j=1,dd)
       enddo
        close(20)
!    ---------------输出2019预报值 str19(i,j) 查看是否正确读入
open(20,file='i:\gradszd\sx6\ps20190666.txt')

            do  i=1,108
         
    write(20,10)(str19(i,j),j=1,dd)
        enddo
        close(20)
10    format(31f8.1)

!-------------------统计n0,n1,n2,m------------------------------   
    do j=1,dd
      n0(j)=0
      n1(j)=0
      n2(j)=0
      m(j)=0
      ps(i)=0.0
    enddo

   do j=1,dd
    do i=1,st

  if(str(i)>=0.and.str19(i,j)>=0.or.str(i)<0.and.str19(i,j)<0)then
      n0(j)=n0(j)+1
    endif
   

   if((str(i)>=20.and.str19(i,j)>=20).and.
     &  (str(i)<50.and.str19(i,j)<50).or.
     & (str(i)<=-20.and.str19(i,j)<=-20).and.
     &  (str(i)>-50.and.str19(i,j)>-50))then
      
     n1(j)=n1(j)+1
      endif
     
   
  if((str(i)>=50.and.str19(i,j)>=50).or.
     & (str(i)<=-50.and.str19(i,j)<=-50))then
      
     n2(j)=n2(j)+1
     
   endif


       if((str(i)>=100.and.str19(i,j)<50).or.
     & (str(i)<=-100.and.str19(i,j)>-50))then
      
     m(j)=m(j)+1
     
    endif

    enddo
   enddo
!-----------------------输出n0,n1,n2,m,符号一致率-----------------------------------
      open(20,file='i:\gradszd\sx6\ps201906nnnn.txt')

            do  j=1,dd
         
   write(20,*)n0(j),n1(j),n2(j),m(j),real(n0(j))/real(st)*100
         enddo
         close(20)
!---------------------------------------------------------------------------------

     do j=1,dd

ps(j)=real(2*n0(j)+2*n1(j)+4*n2(j))/
     & real(st+n0(j)+2*n1(j)+4*n2(j)+m(j))*100
     
       enddo
   
   open(50,file='i:\gradszd\sx6\ps108.txt')

    do j=1,dd


      write(50,*)ps(j)
    enddo
   close(50)
   
   end     

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-1-20 16:41:26 | 显示全部楼层
谢谢楼主
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2020-1-21 10:25:08 | 显示全部楼层
PS评分 不应是是TS评分吗?还可以计算ETS评分就更好了
感谢楼主的贡献
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表