mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-01 08:07:10 -04:00
58 lines
1.5 KiB
Fortran
58 lines
1.5 KiB
Fortran
|
program code426
|
||
|
|
||
|
parameter (MZ=26) !Number of 4-FSK symbols
|
||
|
parameter (JZMAX=64) !Desired number of codewords
|
||
|
integer ic(MZ,JZMAX),icsave(MZ)
|
||
|
real c(MZ)
|
||
|
character*12 arg
|
||
|
|
||
|
nargs=iargc()
|
||
|
if(nargs.ne.2) then
|
||
|
print*,'Usage: code426 <nmsgs> <iters>'
|
||
|
print*,'Example: code426 64 10000000'
|
||
|
go to 999
|
||
|
endif
|
||
|
call getarg(1,arg)
|
||
|
read(arg,*) nmsgs
|
||
|
call getarg(2,arg)
|
||
|
read(arg,*) iters
|
||
|
|
||
|
open(13,file='code426.out',status='unknown')
|
||
|
|
||
|
write(*,1002) nmsgs,iters
|
||
|
write(13,1002) nmsgs,iters
|
||
|
1002 format('Nmsgs:',i4,' Iters:',i10/(66('-')))
|
||
|
|
||
|
do i=1,MZ !Create 4 mutually orthogonal codewords
|
||
|
ic(i,1)=mod(i-1,4)
|
||
|
ic(i,2)=mod(i,4)
|
||
|
ic(i,3)=mod(i+1,4)
|
||
|
ic(i,4)=mod(i+2,4)
|
||
|
enddo
|
||
|
|
||
|
do j=1,4 !Write them out
|
||
|
write(*,1000) j,MZ,ic(1:MZ,j)
|
||
|
write(13,1000) j,MZ,ic(1:MZ,j)
|
||
|
1000 format(2i5,3x,26i2)
|
||
|
enddo
|
||
|
|
||
|
do j=5,nmsgs !Find codewords up to j=nmsgs with maximum
|
||
|
npk=0 !distance from all the rest
|
||
|
do i=1,iters
|
||
|
call random_number(c)
|
||
|
ic(1:MZ,j)=int(4*c)
|
||
|
nd=MZ
|
||
|
do k=1,j-1 !Test candidate against all others in list
|
||
|
nd=min(nd,count(ic(1:MZ,j).ne.ic(1:MZ,k)))
|
||
|
enddo
|
||
|
if(nd.gt.npk) then
|
||
|
npk=nd
|
||
|
icsave=ic(1:MZ,j) !Best candidate so far, save it
|
||
|
endif
|
||
|
enddo
|
||
|
write(*,1000) j,npk,ic(1:MZ,j)
|
||
|
write(13,1000) j,npk,ic(1:MZ,j)
|
||
|
enddo
|
||
|
|
||
|
999 end program code426
|