Correct a flaw in assigning bin numbers for in sync64(), fixing QRA65 submodes B C D E.

This commit is contained in:
Joe Taylor 2020-10-22 14:05:20 -04:00
parent 0ce6556611
commit b68ccee2fa
4 changed files with 21 additions and 11 deletions

View File

@ -50,7 +50,7 @@ subroutine qra_loops(c00,npts2,mode,mode64,nsubmode,nFadingModel, &
jpk=jpk0 + 240*ndt !240/6000 = 0.04 s = tsym/32
if(jpk.lt.0) jpk=0
call timer('spec64 ',0)
call spec64(c0,nsps,mode,jpk,s3,LL,NN)
call spec64(c0,nsps,mode,mode64,jpk,s3,LL,NN)
call timer('spec64 ',1)
call pctile(s3,LL*NN,40,base)
s3=s3/base
@ -98,7 +98,7 @@ subroutine qra_loops(c00,npts2,mode,mode64,nsubmode,nFadingModel, &
call twkfreq(c00,c0,npts2,6000.0,a)
! jpk=4320
jpk=4080
call spec64(c0,nsps,mode,jpk,s3,LL,NN)
call spec64(c0,nsps,mode,mode64,jpk,s3,LL,NN)
call pctile(s3,LL*NN,40,base)
s3=s3/base
where(s3(1:LL*NN)>s3lim) s3(1:LL*NN)=s3lim

View File

@ -1,10 +1,11 @@
subroutine spec64(c0,nsps,mode,jpk,s3,LL,NN)
subroutine spec64(c0,nsps,mode,mode64,jpk,s3,LL,NN)
parameter (MAXFFT=3840)
complex c0(0:360000) !Complex spectrum of dd()
complex cs(0:MAXFFT-1) !Complex symbol spectrum
real s3(LL,NN) !Synchronized symbol spectra
real xbase0(LL),xbase(LL)
! integer ipk1(1)
integer isync(22) !Indices of sync symbols
data isync/1,9,12,13,15,22,23,26,27,33,35,38,46,50,55,60,62,66,69,74,76,85/
@ -39,7 +40,7 @@ subroutine spec64(c0,nsps,mode,jpk,s3,LL,NN)
cs(0:nfft-1)=fac*c0(ja:jb)
call four2a(cs,nsps,1,-1,1) !c2c FFT to frequency
do ii=1,LL
i=ii-65
i=ii-65+mode64 !mode64 = 1 2 4 8 16 for QRA65 A B C D E
if(i.lt.0) i=i+nsps
s3(ii,j)=real(cs(i))**2 + aimag(cs(i))**2
enddo
@ -62,16 +63,18 @@ subroutine spec64(c0,nsps,mode,jpk,s3,LL,NN)
s3(i,1:NN)=s3(i,1:NN)/(xbase(i)+0.001) !Apply frequency equalization
enddo
! print*,'a',LL,NN,jpk
! print*,'a',LL,NN,jpk,mode,mode64
! df=6000.0/nfft
! do i=1,LL
! write(71,3071) i,i-65,i*df,(s3(i,j),j=1,4)
!3071 format(2i8,f10.3,4e12.3)
! enddo
!
! do j=1,NN
! write(72,3072) j,maxloc(s3(1:LL,j)),maxloc(s3(1:LL,j))-65
!3072 format(3i8)
! ipk1=maxloc(s3(1:LL,j))
! m=ipk1(1)-65
! write(72,3072) j,m,m/2,m/4,m/8
!3072 format(5i8)
! enddo
! if(nfft.ne.-999) stop

View File

@ -107,12 +107,19 @@ subroutine sync_qra65(iwave,nmax,mode65,nsps,nfqso,ntol,xdt,f0,snr1)
endif
enddo
rms=sqrt(sq/nsq)
snr1=ccf(ipk,jpk)/rms
smax=ccf(ipk,jpk)
snr1=smax/rms
! do j=lag1,lag2
! write(55,3055) j,j*dtstep,ccf(ipk,j)/rms
!3055 format(i5,f8.3,f10.3)
! enddo
! ncall=ncall+1
! do i=-ia,ia
! write(56,3056) ncall,i*df,ncall+0.3*ccf(i,0)/rms
!3056 format(i6,f7.2,f10.3)
! enddo
return
end subroutine sync_qra65

View File

@ -6403,7 +6403,7 @@ void MainWindow::on_actionQRA65_triggered()
m_hsymStop=49;
ui->sbTR->values ({15, 30, 60, 120, 300});
on_sbTR_valueChanged (ui->sbTR->value());
ui->sbSubmode->setMaximum(3);
ui->sbSubmode->setMaximum(4);
ui->sbSubmode->setValue(m_nSubMode); m_wideGraph->setMode(m_mode);
m_wideGraph->setMode(m_mode);
m_wideGraph->setModeTx(m_modeTx);