mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-25 05:38:46 -05:00
6be4f3d376
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6272 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
63 lines
1.7 KiB
Fortran
63 lines
1.7 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
|
|
|
|
call init_random_seed()
|
|
|
|
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) !Generate a random codeword candidate
|
|
ic(1:MZ,j)=int(4*c) !Convert real to integer
|
|
! nd=MZ
|
|
! do k=1,j-1 !Test candidate against all others in list
|
|
! n=count(ic(1:MZ,j).ne.ic(1:MZ,k))
|
|
! nd=min(n,nd)
|
|
! enddo
|
|
call dist426(ic,j,mind)
|
|
if(mind.gt.npk) then
|
|
npk=mind
|
|
icsave=ic(1:MZ,j) !Best candidate so far, save it
|
|
! if(npk.ge.19) exit !It won't get any better...
|
|
endif
|
|
enddo
|
|
write(*,1000) j,npk,ic(1:MZ,j)
|
|
write(13,1000) j,npk,ic(1:MZ,j)
|
|
enddo
|
|
|
|
999 end program code426
|