79 lines
2.3 KiB
Fortran
79 lines
2.3 KiB
Fortran
!c****************************************************************
|
|
|
|
subroutine intf_filt(c_intb, c_ampb, c_intb_filt)
|
|
|
|
!c****************************************************************
|
|
!c**
|
|
!c** FILE NAME: intf_filt.f
|
|
!c**
|
|
!c** DATE WRITTEN: 4-Mar-98
|
|
!c**
|
|
!c** PROGRAMMER: Charles Werner
|
|
!c**
|
|
!c** FUNCTIONAL DESCRIPTION: This routine performs general filtering
|
|
!c** of the interferogram
|
|
!c**
|
|
!c** ROUTINES CALLED: psfilt, lowpass
|
|
!c**
|
|
!c** NOTES: i_filttype: 0=lowpass, 1=PS filtering
|
|
!c**
|
|
!c** UPDATE LOG:
|
|
!c**
|
|
!c** Date Changed Reason Changed
|
|
!c** ------------ ----------------
|
|
!c** 4-Mar-98 Created
|
|
!C**
|
|
!c*****************************************************************
|
|
|
|
use icuState
|
|
implicit none
|
|
|
|
!c INPUT VARIABLES:
|
|
|
|
complex*8 c_intb(0:infp%i_rsamps-1, 0:infp%i_azbufsize-1) !input interferogram
|
|
complex*8 c_ampb(0:infp%i_rsamps-1, 0:infp%i_azbufsize-1) !amplitude data in (SLC-1,SLC-2) pair format
|
|
|
|
!c OUTPUT VARIABLES:
|
|
|
|
complex*8 c_intb_filt(0:infp%i_rsamps-1, 0:infp%i_azbufsize-1)!output filtered interf.
|
|
|
|
c LOCAL VARIABLES:
|
|
|
|
integer*4 k,l,j,i !loop indices
|
|
|
|
do i=0, infp%i_azbufsize - 1 !initialize output data
|
|
do j=0, infp%i_rsamps - 1
|
|
c_intb_filt(j,i)=cmplx(0.0,0.0)
|
|
end do
|
|
end do
|
|
|
|
if(infp%i_filtopt .eq. 0) then
|
|
!c write(6,'(1x,a)') 'INTF_FILT: no interferogram filtering applied'
|
|
do l = infp%i_sline, infp%i_eline
|
|
do k=infp%i_ssamp, infp%i_esamp
|
|
c_intb_filt(k,l) = c_intb(k,l)
|
|
end do
|
|
end do
|
|
return
|
|
end if
|
|
|
|
if(infp%i_filttype .eq. 0) then !lowpass filter
|
|
|
|
call lowpass(c_intb, c_intb_filt, infp%i_sline, infp%i_eline,
|
|
$ infp%i_ssamp, infp%i_esamp, infp%r_lpwinrng, infp%r_lpwinaz)
|
|
|
|
elseif (infp%i_filttype .eq. 1) then !adaptive power spectrum filter
|
|
|
|
if(infp%i_useamp .eq. 1) then
|
|
call psfilt(c_intb, c_ampb, c_intb_filt, infp%i_sline, infp%i_eline,
|
|
$ infp%i_ssamp, infp%i_esamp, infp%r_ps_alpha)
|
|
else
|
|
call psfilt(c_intb, c_intb, c_intb_filt, infp%i_sline, infp%i_eline,
|
|
$ infp%i_ssamp, infp%i_esamp, infp%r_ps_alpha)
|
|
end if
|
|
|
|
end if
|
|
|
|
return
|
|
end
|