mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-12-24 11:40:31 -05:00
Refine a test program and add comments.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8203 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
b7b54367b0
commit
a45f1f079c
@ -1,32 +1,59 @@
|
||||
program jt65osdtest
|
||||
!
|
||||
! Test k9an's JT65 encoder by comparing codewords with
|
||||
! Demonstrate some procedures that can be used to implement an ordered-
|
||||
! statistics decoder for JT65.
|
||||
! 1. Test JT65 generator-matrix-based encoding by comparing codewords with
|
||||
! those produced by the tried-and-true KA9Q encoder
|
||||
! 2. Demonstrate how to reconfigure the generator matrix to make an arbitrary
|
||||
! subset of 12 symbols the systematic symbols, and show that re-encoding using
|
||||
! the subset of symbols regenerates the original codeword.
|
||||
!
|
||||
use jt65_generator_matrix
|
||||
use gf64math
|
||||
use packjt
|
||||
|
||||
character*22 message
|
||||
integer m(12),cwka9q(63),cwk9an(63),cwtest(63)
|
||||
integer gmrb(12,63)
|
||||
do i=1,12
|
||||
m(i)=i
|
||||
enddo
|
||||
data m/61,51,10,42,51,55, 3,29,53,55,58,42/ !"K9AN K1JT -25"
|
||||
|
||||
message="K9AN K1JT RRR"
|
||||
call packmsg(message,m,itype,.false.)
|
||||
write(*,*) 'Message text: ',message
|
||||
write(*,*) 'Message symbols:'
|
||||
write(*,'(12i3)') m
|
||||
|
||||
! Encode using Karn encoder.
|
||||
call rs_encode(m,cwka9q)
|
||||
write(*,*) 'KA9Q codeword'
|
||||
write(*,'(63i3)') cwka9q
|
||||
! Encode using generator matrix.
|
||||
call gf64_encode(g,m,cwk9an)
|
||||
write(*,*) 'K9AN codeword'
|
||||
write(*,'(63i3)') cwk9an
|
||||
|
||||
! The message symbols are the last 12 symbols of the codeword. For this test,
|
||||
! "pretend" that the symbols at positions 1,3,5,7,9,11,13,15,17,19,21,23 are
|
||||
! the best received symbols, i.e. the best symbols are all parity symbols.
|
||||
! Reorder columns of the generator matrix so that the best symbols are in front
|
||||
! and then use Gauss-Jordan elimination to create a generator matrix that
|
||||
! can be used to re-encode the best 12 symbols, producing the same codeword
|
||||
! that we started with.
|
||||
gmrb=g
|
||||
call gf64_standardize_genmat(gmrb)
|
||||
do i=1,12
|
||||
write(*,'(63i3)') gmrb(i,:)
|
||||
gmrb(1:12,i)=g(1:12,2*i-1)
|
||||
gmrb(1:12,i+12)=g(1:12,2*i)
|
||||
enddo
|
||||
|
||||
m(1:12)=cwk9an(1:12)
|
||||
call gf64_encode(gmrb,m,cwtest)
|
||||
write(*,*) 'Test message:'
|
||||
call gf64_standardize_genmat(gmrb)
|
||||
|
||||
! Now demonstrate that we can use the revised generator matrix to encode the 12
|
||||
! best symbols and recover the codeword that we started with.
|
||||
m(1:12)=cwk9an(1:23:2) !Take symbols 1,3,5,...23 as the message
|
||||
call gf64_encode(gmrb,m,cwtest) !reencode using the revised generator matrix
|
||||
write(*,*) 'Re-encode using generator matrix reconfigured to use odd-index symbols starting at 1 as the message:'
|
||||
write(*,'(12i3)') m
|
||||
write(*,*) 'Codeword:'
|
||||
write(*,'(63i3)') cwtest
|
||||
write(*,*) 'Re-encoded codeword should be the same as the original codeword:'
|
||||
write(*,'(63i3)') cwtest !This should be the same as the original cw.
|
||||
|
||||
end program jt65osdtest
|
||||
|
Loading…
Reference in New Issue
Block a user