爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4308|回复: 2

[求助] 对四维场滤波的问题

[复制链接]

新浪微博达人勋

发表于 2012-6-21 10:26:33 | 显示全部楼层 |阅读模式

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

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

x
看了滤波程序 是对一维时间序列的滤波 我要对空间场空间点的时间序列进行滤波  我这样可以吗



program lvbo
      implicit none
      integer,parameter::nd=121
      integer i,nx,ny,nz
real perl,perc
      real w0,w1

      real uwnd(144,29,17,nd),y(nd),x(nd),uu(144,29,17,nd)
      perl=30.0
      perc=sqrt(1800.0)
      open(11,file='E:\uwndfield\readuwnd\uwnd1.grd',form='binary')
      do nx=1,144
do ny=1,29
do nz=1,17
      do i=1,nd
  read(11) uwnd(nx,ny,nz,i)
     x(i)=uwnd(nx,ny,nz,i)

end do
   
      call FILTER(x,ND,PERC,PERL,W0,W1,y)
      open(21,file='E:\uwndfield\uwnd30-60filter\30-60filter\uwnd
     &30-60-1.grd',form='binary')
           uu(nx,ny,nz,i)=y(i)
  write(21) uu(nx,ny,nz,i)
  
      
end do
end do
end do
end do
           end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2012-6-22 10:28:05 | 显示全部楼层
你就是对每个格点逐一滤波吧?这样是可以的,但是程序上面有一些漏洞!
1、二进制的数据在读取方式上面是有要求的,类似read(*,*)((((x(i,j,k),i=1,m),j=1,n),k=1,o)
2、在call调用子过程得到结果的时候你的输出是不妥的,你这样做的输出会导致文件中只有一个相同的结果,就是最后一个个点的滤波结果,正确的做法是在执行循环的外端打开文件,而不是每执行一次循环打开一次
3、输出的时候是不妥的,至少保证输出的时候是一条序列或者多条序列,应该在输出语句里面执行一次或多次循环。

【建议】楼主参考一下论坛里发过的不少二进制文件的输入输出,并弄清楚滤波的输入输出文件以及设计一下输出方案。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-6-22 12:15:34 | 显示全部楼层

program lvbo
      implicit none

      integer,parameter::nd=121
      integer i,nx,ny,nz
        real perl,perc
      real w0,w1

       
      real uwnd(144,29,17,nd),y(nd),x(nd),uu(144,29,17,nd)

      perl=30.0
      perc=sqrt(1800.0)

      open(11,file='E:\uwndfield\readuwnd\uwnd1.grd',form='binary')
      
                do nx=1,144
        do ny=1,29
        do nz=1,17
                do i=1,nd
                read(11) uwnd(nx,ny,nz,i)
                x(i)=uwnd(nx,ny,nz,i)
        end do
        end do
        end do
        end do
           call FILTER(x,ND,PERC,PERL,W0,W1,y)
      open(21,file='E:\uwndfield\uwnd30-60filter\30-60filter\uwnd
     &30-60-1.grd',form='binary')
                 do nx=1,144
              do ny=1,29
        do nz=1,17

                  do i=1,nd
          uu(nx,ny,nz,i)=y(i)
         write(21) uu(nx,ny,nz,i)
        end do
        end do
        end do
        end do
      end do
改成这样和以前的那样都能输出结果 ,主要是对结果生成的文件进行的开始 ,是打不开的 fortran运行的黑框 闪一下就没了 也没有结果
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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