mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-08-21 14:06:32 -04:00
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@2464 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
31 lines
718 B
Fortran
31 lines
718 B
Fortran
subroutine iqcal(nn,c,nfft,gain,phase,zsum,ipk,reject)
|
|
|
|
complex c(0:nfft-1)
|
|
complex z,zsum,zave
|
|
|
|
if(nn.eq.0) then
|
|
zsum=0.
|
|
endif
|
|
nn=nn+1
|
|
smax=0.
|
|
ipk=1
|
|
do i=1,nfft-1 !Find strongest signal
|
|
s=real(c(i))**2 + aimag(c(i))**2
|
|
if(s.gt.smax) then
|
|
smax=s
|
|
ipk=i
|
|
endif
|
|
enddo
|
|
pimage=real(c(nfft-ipk))**2 + aimag(c(nfft-ipk))**2
|
|
p=smax + pimage
|
|
z=c(ipk)*c(nfft-ipk)/p !Synchronous detection of image
|
|
zsum=zsum+z
|
|
zave=zsum/nn
|
|
tmp=sqrt(1.0 - (2.0*real(zave))**2)
|
|
phase=asin(2.0*aimag(zave)/tmp) !Estimate phase
|
|
gain=tmp/(1.0-2.0*real(zave)) !Estimate gain
|
|
reject=10.0*log10(pimage/smax)
|
|
|
|
return
|
|
end subroutine iqcal
|