mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-03 16:01:18 -05:00
2928042321
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3623 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
75 lines
1.3 KiB
Fortran
75 lines
1.3 KiB
Fortran
subroutine flat3(savg0,iz,nterms,ynoise,savg)
|
|
|
|
implicit real*8 (a-h,o-z)
|
|
parameter (NSMAX=6827)
|
|
real*4 savg0(iz)
|
|
real*4 savg(iz)
|
|
real*4 ynoise,y4
|
|
|
|
real*8 x(NSMAX)
|
|
real*8 y(NSMAX)
|
|
real*8 y0(NSMAX)
|
|
real*8 yfit(NSMAX)
|
|
real*8 a(10)
|
|
integer ii(NSMAX)
|
|
|
|
npts0=999999
|
|
df=12000.0/16384.0
|
|
|
|
do i=1,iz
|
|
y0(i)=db(savg0(i))
|
|
enddo
|
|
ia=200.0/df
|
|
ib=4500.0/df
|
|
j=0
|
|
do i=ia,ib
|
|
j=j+1
|
|
x(j)=i*df
|
|
y(j)=y0(i)
|
|
ii(j)=i
|
|
enddo
|
|
|
|
npts=j
|
|
mode=0
|
|
a=0.0
|
|
|
|
do iter=1,99
|
|
call polfit(x,y,y,npts,nterms,mode,a,chisqr)
|
|
! print*,iter,npts,a(1:nterms)
|
|
|
|
rewind 21
|
|
do i=1,ib
|
|
f=i*df
|
|
yfit(i)=0.0
|
|
do n=1,nterms
|
|
yfit(i)=yfit(i) + a(n) * f**(n-1)
|
|
enddo
|
|
! write(21,1010) f,y0(i),yfit(i),y0(i)-yfit(i)
|
|
!1010 format(4f12.3)
|
|
enddo
|
|
k=0
|
|
do j=1,npts
|
|
y1=y(j)-yfit(ii(j))
|
|
if(y1.lt.ynoise) then
|
|
k=k+1
|
|
x(k)=x(j)
|
|
y(k)=y(j)
|
|
ii(k)=ii(j)
|
|
endif
|
|
enddo
|
|
npts=k
|
|
if(npts.eq.npts0 .or. npts.lt.(ib-ia)/10) exit
|
|
npts0=npts
|
|
enddo
|
|
|
|
! do j=1,npts
|
|
! write(22,1010) x(j),y(j),yfit(ii(j)),y(j)-yfit(ii(j))
|
|
! enddo
|
|
|
|
do i=1,ib
|
|
y4=y0(i)-yfit(i)
|
|
savg(i)=10.0**(0.1*y4)
|
|
enddo
|
|
|
|
end subroutine flat3
|