convlv.f90

来自「FORTRANvisualfortran常用数值算法集及源码」· F90 代码 · 共 29 行

F90
29
字号
SUBROUTINE convlv(data1,n,respns,m,isign,ans)
PARAMETER(nmax=8192)
DIMENSION data1(n),respns(n)
COMPLEX fft(nmax),ans(n)
INTEGER i,m,isign,no2
do i=1,(m-1)/2
  respns(n+1-i)=respns(m+1-i)
end do
do i=(m+3)/2,n-(m-1)/2
  respns(i)=0.0
end do
call twofft(data1,respns,fft,ans,n)
no2=n/2
do i=1,no2+1
  if (isign==1)  then
    ans(i)=fft(i)*ans(i)/no2
  else  if(isign==-1)  then
    if (cabs(ans(i))==0.0)&
         pause 'deconvolving at a response zero'
    ans(i)=fft(i)/ans(i)/no2
  else
    pause 'no meaning for isign'
  endif
end do
ans(1)=cmplx(real(ans(1)),real(ans(no2+1)))
call  realft(ans,no2,-1)
END SUBROUTINE CONVLV

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?