mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-25 02:42:28 -04:00
40 lines
758 B
Fortran
40 lines
758 B
Fortran
subroutine plotspec(dat)
|
|
|
|
use sfox_mod
|
|
real dat(NMAX)
|
|
real s(0:NSPS/2)
|
|
complex c(0:NSPS-1)
|
|
integer ipk(1)
|
|
|
|
nblks=NZ/NSPS
|
|
s=0.
|
|
fac=1.0/NSPS
|
|
do j=1,nblks
|
|
ib=j*NSPS
|
|
ia=ib-NSPS+1
|
|
c=fac*dat(ia:ib)
|
|
call four2a(c,NSPS,1,-1,1)
|
|
do i=0,NSPS/2
|
|
s(i)=s(i) + real(c(i))**2 + aimag(c(i))**2
|
|
enddo
|
|
enddo
|
|
|
|
df=12000.0/NSPS
|
|
ipk=maxloc(s)
|
|
f0=df*(ipk(1)-1)
|
|
p_sig_plus_noise=maxval(s)
|
|
p_noise=0.
|
|
do i=0,NSPS/2
|
|
f=i*df
|
|
if(f.le.2500+df .and. abs(f-f0).gt.0.5*df) p_noise=p_noise + s(i)
|
|
write(40,1000) f,s(i)
|
|
1000 format(2f10.3)
|
|
enddo
|
|
p_sig=p_sig_plus_noise - p_noise*df/2500.0
|
|
snr=p_sig/p_noise
|
|
snrdb=db(snr)
|
|
write(*,1100) snrdb
|
|
1100 format('Measured SNR:',f7.2)
|
|
|
|
end subroutine plotspec
|