用Fortran三点平滑处理数据

先计算txt文件中指定站点的区域每月总量,再用三点平滑计算每三个月的平均降水量

PS:因为初始文件中降水单位是0.1mm所以最后结果要除1,而且月降水量是指这个月的降水总量,不用除以天数!

初始数据文件格式:年份-月份-月平均降水量

 站点名文件存放格式:

 实现数据处理代码:

!计算区域总降水量三月滑动平均
    program main
    implicit none
    integer,parameter :: num = 10, year = 10, mon = 12 !num 为站点数 year为年数 mon为月数
    integer i,n,m,u,y(year)
    real x(num,year,mon) 
    character(9) filename(num) !申明字符型变量储存文件名
    real :: s(num,mon),mave(year,mon) = 0.0,xy(year) = 0
    open(10,file = 'E:\cjlist.txt') !存放使用站点名的文件
    do i = 1,num
        read(10,*) filename(i) !读取文件中的站点名+后缀
        open(20,file='E:\pre\'//filename(i)) !存放站点数据的文件路径
        do n = 1,year
            do m = 1,mon
                read(20,*) y(n),u,x(i,n,m) !y(n)为年份 x为每个月的平均降水数据
            enddo
        enddo
    enddo
    
    open(30,file = 'E:\prey.dat') !存放每年降水量的文件
    open(60,file = 'E:\prem.dat') !存放每月降水量的文件
    do n = 1,year
        do m = 1,mon
            do i = 1,num
                mave(n,m) = mave(n,m) + x(i,n,m)
            enddo
            mave(n,m) = mave (n,m) / num
            xy(n) = xy(n) + mave(n,m)
        enddo
        write(30,*) xy(n) / 10
        write(60,'(12(f10.2,1X))') (mave(n,m) / 10,m = 1,mon)
    enddo
    
    open(40,file = 'E:\prejd_3.dat') !存放三个月滑动平均降水量的文件
     do n = 1,year-1
        do m = 1,mon
            SELECT CASE(m)
            CASE(1:10)
                s(n,m) = mave(n,m) + mave(n,m+1) + mave(n,m+2)
            CASE(11)
                s(n,m) = mave(n,m) + mave(n,12) + mave(n+1,1)
            CASE(12)
                s(n,m) = mave(n,m) + mave(n+1,1) + mave(n+1,2)
            ENDSELECT
        enddo
        write(40,'(12(f10.2,3x))') (s(n,m)/10,m = 1,mon)
     enddo 
     

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值