mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-27 06:38:44 -05:00
A few more tweaks of the draft paper.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6206 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
b8f772d0b9
commit
8603532acc
@ -89,16 +89,16 @@ The JT65 mode has revolutionized amateur-radio weak-signal communication
|
|||||||
by enabling amateur radio operators with small antennas and relatively
|
by enabling amateur radio operators with small antennas and relatively
|
||||||
low-power transmitters to communicate over propagation paths not usable
|
low-power transmitters to communicate over propagation paths not usable
|
||||||
with traditional technologies.
|
with traditional technologies.
|
||||||
A major reason for the success and popularity of JT65 is its use of strong
|
A major reason for the success and popularity of JT65 is its use of a strong
|
||||||
error-correction coding: a short block-length, low-rate, Reed-Solomon code
|
error-correction code: a short block-length, low-rate Reed-Solomon code
|
||||||
based on a 64-symbol alphabet.
|
based on a 64-symbol alphabet.
|
||||||
Since 2004, most JT65 decoders have used the patented Koetter-Vardy (KV)
|
Since 2004, most JT65 decoders have used the patented Koetter-Vardy (KV)
|
||||||
algebraic soft-decision decoder.
|
algebraic soft-decision decoder, licensed to K1JT and implemented in a
|
||||||
The KV decoder is implemented in a closed-source program licensed to K1JT
|
closed-source program for use in amateur radio applications.
|
||||||
for use in amateur radio applications.
|
|
||||||
We describe here a new open-source alternative called the FT algotithm.
|
We describe here a new open-source alternative called the FT algotithm.
|
||||||
It is conceptually simple, is built around the well-known Berlekamp-Massey
|
It is conceptually simple, built around the well-known Berlekamp-Massey
|
||||||
errors-and-erasures algorithm, and perform at least as well as the KV decoder.
|
errors-and-erasures algorithm, and performs at least as well as the KV
|
||||||
|
decoder.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Section
|
\begin_layout Section
|
||||||
@ -106,32 +106,32 @@ Introduction
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
JT65 message frames consist of a short, compressed message encoded for transmiss
|
JT65 message frames consist of a short compressed message encoded for transmissi
|
||||||
ion with a Reed-Solomon code.
|
on with a Reed-Solomon code.
|
||||||
Reed-Solomon codes are block codes; as such they are characterized by the
|
Reed-Solomon codes are block codes characterized by
|
||||||
length of their codewords,
|
|
||||||
\begin_inset Formula $n$
|
\begin_inset Formula $n$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
, the number of message symbols conveyed by the codeword,
|
, the length of their codewords,
|
||||||
\begin_inset Formula $k$
|
\begin_inset Formula $k$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
, and the number of possible values for each symbol in the codewords.
|
, the number of message symbols conveyed by the codeword, and the number
|
||||||
The codeword length and the number of message symbols are specified as
|
of possible values for each symbol in the codewords.
|
||||||
a tuple in the form
|
The codeword length and the number of message symbols are specified using
|
||||||
|
the notation
|
||||||
\begin_inset Formula $(n,k)$
|
\begin_inset Formula $(n,k)$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
.
|
.
|
||||||
JT65 uses a (63,12) Reed-Solomon code with 64 possible values for each
|
JT65 uses a (63,12) Reed-Solomon code with 64 possible values for each
|
||||||
symbol.
|
symbol.
|
||||||
Each symbol represents
|
Each of the 12 message symbols represents
|
||||||
\begin_inset Formula $\log_{2}64=6$
|
\begin_inset Formula $\log_{2}64=6$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
message bits.
|
message bits.
|
||||||
The source-encoded messages conveyed by a 63-symbol JT65 frame consist
|
The source-encoded messages conveyed by a 63-symbol JT65 frame thus consist
|
||||||
of 72 bits.
|
of 72 bits.
|
||||||
The JT65 code is systematic, which means that the 12 message symbols are
|
The JT65 code is systematic, which means that the 12 message symbols are
|
||||||
embedded in the codeword without modification and another 51 parity symbols
|
embedded in the codeword without modification and another 51 parity symbols
|
||||||
@ -191,30 +191,31 @@ For the JT65 code,
|
|||||||
\begin_inset Formula $t=25$
|
\begin_inset Formula $t=25$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
: it is always possible to efficiently decode a received word having no
|
, so it is always possible to efficiently decode a received word having
|
||||||
more than 25 symbol errors.
|
no more than 25 symbol errors.
|
||||||
Any one of several well-known algebraic algorithms, such as the widely
|
Any one of several well-known algebraic algorithms, such as the widely
|
||||||
used Berlekamp-Massey (BM) algorithm, can carry out the decoding.
|
used Berlekamp-Massey (BM) algorithm, can carry out the decoding.
|
||||||
Two steps are ncessarily involved in this process, namely
|
Two steps are ncessarily involved in this process, namely
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Enumerate
|
\begin_layout Enumerate
|
||||||
determine which symbols were received incorrectly
|
Determine which symbols were received incorrectly.
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Enumerate
|
\begin_layout Enumerate
|
||||||
determine the correct value of the incorrect symbols
|
Find the correct value of the incorrect symbols.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
If we somehow know that certain symbols are incorrect, this information
|
If we somehow know that certain symbols are incorrect, this information
|
||||||
can be used to reduce the work in step 1 and allow step 2 to correct more
|
can be used to reduce the work involved in step 1 and allow step 2 to correct
|
||||||
than
|
more than
|
||||||
\begin_inset Formula $t$
|
\begin_inset Formula $t$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
errors.
|
errors.
|
||||||
In the unlikely event that the location of every error is known, and if
|
In the unlikely event that the location of every error is known and if
|
||||||
no correct symbols are accidentally labeled as errors, the BM algorithm
|
no correct symbols are accidentally labeled as errors, the BM algorithm
|
||||||
can correct up to
|
can correct up to
|
||||||
\begin_inset Formula $d$
|
\begin_inset Formula $d$
|
||||||
@ -275,15 +276,7 @@ errors-only
|
|||||||
\begin_inset Quotes erd
|
\begin_inset Quotes erd
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
decoder and can correct up to
|
decoder.
|
||||||
\begin_inset Formula $t$
|
|
||||||
\end_inset
|
|
||||||
|
|
||||||
errors (
|
|
||||||
\begin_inset Formula $t$
|
|
||||||
\end_inset
|
|
||||||
|
|
||||||
=25 for JT65).
|
|
||||||
If
|
If
|
||||||
\begin_inset Formula $0<s\le d-1$
|
\begin_inset Formula $0<s\le d-1$
|
||||||
\end_inset
|
\end_inset
|
||||||
@ -303,7 +296,15 @@ errors-and-erasures
|
|||||||
decoder.
|
decoder.
|
||||||
The possibility of doing errors-and-erasures decoding lies at the heart
|
The possibility of doing errors-and-erasures decoding lies at the heart
|
||||||
of the FT algorithm.
|
of the FT algorithm.
|
||||||
|
On that foundation we build a capability for using
|
||||||
|
\begin_inset Quotes eld
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
soft
|
||||||
|
\begin_inset Quotes erd
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
information on symbol reliability.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Section
|
\begin_layout Section
|
||||||
@ -320,8 +321,8 @@ Do I feel lucky?
|
|||||||
The FT algorithm uses the estimated quality of received symbols to generate
|
The FT algorithm uses the estimated quality of received symbols to generate
|
||||||
lists of symbols considered likely to be in error, thereby enabling reliable
|
lists of symbols considered likely to be in error, thereby enabling reliable
|
||||||
decoding of received words with more than 25 errors.
|
decoding of received words with more than 25 errors.
|
||||||
As a specific example, consider a received JT65 signal producing 23 correct
|
As a specific example, consider a received JT65 word with 23 correct symbols
|
||||||
symbols and 40 errors.
|
and 40 errors.
|
||||||
We do not know which symbols are in error.
|
We do not know which symbols are in error.
|
||||||
Suppose that the decoder randomly selects
|
Suppose that the decoder randomly selects
|
||||||
\begin_inset Formula $s=40$
|
\begin_inset Formula $s=40$
|
||||||
@ -466,7 +467,7 @@ Suppose a codeword contains
|
|||||||
of the erased symbols are actually incorrect is then
|
of the erased symbols are actually incorrect is then
|
||||||
\begin_inset Formula
|
\begin_inset Formula
|
||||||
\[
|
\[
|
||||||
P(x=35)=\frac{\binom{40}{35}\binom{63-40}{40-35}}{\binom{63}{40}}=2.356\times10^{-7}.
|
P(x=35)=\frac{\binom{40}{35}\binom{63-40}{40-35}}{\binom{63}{40}}\simeq2.4\times10^{-7}.
|
||||||
\]
|
\]
|
||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
@ -478,7 +479,7 @@ Similarly, the probability that
|
|||||||
of the erased symbols are incorrect is
|
of the erased symbols are incorrect is
|
||||||
\begin_inset Formula
|
\begin_inset Formula
|
||||||
\[
|
\[
|
||||||
P(x=36)=8.610\times10^{-9}.
|
P(x=36)\simeq8.6\times10^{-9}.
|
||||||
\]
|
\]
|
||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
@ -623,7 +624,7 @@ reference "eq:hypergeometric_pdf"
|
|||||||
.
|
.
|
||||||
The odds for successful decoding on the first try are now about 1 in 38.
|
The odds for successful decoding on the first try are now about 1 in 38.
|
||||||
A few hundred independently randomized tries would be enough to all-but-guarant
|
A few hundred independently randomized tries would be enough to all-but-guarant
|
||||||
ee production of a valid codeword from the BM decoder.
|
ee production of a valid codeword by the BM decoder.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Section
|
\begin_layout Section
|
||||||
@ -653,7 +654,7 @@ The FT algorithm uses two quality indices made available by a noncoherent
|
|||||||
on which of 64 frequency bins contains the the largest signal-plus-noise
|
on which of 64 frequency bins contains the the largest signal-plus-noise
|
||||||
power.
|
power.
|
||||||
The fraction of total power in the two bins containing the largest and
|
The fraction of total power in the two bins containing the largest and
|
||||||
second-largest powers (denoted by,
|
second-largest powers (denoted by
|
||||||
\begin_inset Formula $p_{1}$
|
\begin_inset Formula $p_{1}$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
@ -735,14 +736,22 @@ a-priori
|
|||||||
.
|
.
|
||||||
Correspondingly, the FT algorithm works best when the probability of erasing
|
Correspondingly, the FT algorithm works best when the probability of erasing
|
||||||
a symbol is somewhat larger than the probability that the symbol is incorrect.
|
a symbol is somewhat larger than the probability that the symbol is incorrect.
|
||||||
Empirically, we found good decoding performance when the symbol erasure
|
We found empirically that good decoding performance is obtained when the
|
||||||
probability is about 1.3 times the symbol error probability.
|
symbol erasure probability is about 1.3 times the symbol error probability.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
The FT algorithm tries successively to decode the received word using independen
|
The FT algorithm tries successively to decode the received word using independen
|
||||||
t educated guesses to select symbols for erasure.
|
t
|
||||||
For each iteration an stochastic erasure vector is generated based on the
|
\begin_inset Quotes eld
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
educated guesses
|
||||||
|
\begin_inset Quotes erd
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
to select symbols for erasure.
|
||||||
|
For each iteration a stochastic erasure vector is generated based on the
|
||||||
symbol erasure probabilities.
|
symbol erasure probabilities.
|
||||||
The erasure vector is sent to the BM decoder along with the full set of
|
The erasure vector is sent to the BM decoder along with the full set of
|
||||||
63 received symbols.
|
63 received symbols.
|
||||||
@ -751,7 +760,8 @@ t educated guesses to select symbols for erasure.
|
|||||||
\begin_inset Formula $d_{s}$
|
\begin_inset Formula $d_{s}$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
defined as the soft distance between the received word and the codeword:
|
defined as the soft distance between the received word and the codeword,
|
||||||
|
where
|
||||||
\begin_inset Formula
|
\begin_inset Formula
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
d_{s}=\sum_{i=1}^{n}\alpha_{i}\,(1+p_{1,i}).\label{eq:soft_distance}
|
d_{s}=\sum_{i=1}^{n}\alpha_{i}\,(1+p_{1,i}).\label{eq:soft_distance}
|
||||||
@ -780,19 +790,18 @@ Here
|
|||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
.
|
.
|
||||||
Think of the soft distance as two terms: the first is the Hamming distance
|
Think of the soft distance as made up of two terms: the first is the Hamming
|
||||||
between the received word and the codeword, and the second ensures that
|
distance between the received word and the codeword, and the second ensures
|
||||||
if two candidate codewords have the same Hamming distance from the received
|
that if two candidate codewords have the same Hamming distance from the
|
||||||
word, a smaller distance will be assigned to the one where differences
|
received word, a smaller soft distance will be assigned to the one where
|
||||||
occur in symbols of lower quality.
|
differences occur in symbols of lower estimated reliability.
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Technically the FT algorithm is a list decoder, potentially generating a
|
Technically the FT algorithm is a list decoder, potentially generating a
|
||||||
list of candidate codewords.
|
list of candidate codewords.
|
||||||
Among the list of candidate codewords found by this stochastic search algorithm
|
Among the list of candidate codewords found by the stochastic search algorithm,
|
||||||
, only the one with the smallest soft-distance from the received word is
|
only the one with the smallest soft distance from the received word is
|
||||||
retained.
|
retained.
|
||||||
As with all such algorithms, a stopping criterion is necessary.
|
As with all such algorithms, a stopping criterion is necessary.
|
||||||
FT accepts a codeword unconditionally if its soft distance is smaller than
|
FT accepts a codeword unconditionally if its soft distance is smaller than
|
||||||
@ -801,7 +810,7 @@ Technically the FT algorithm is a list decoder, potentially generating a
|
|||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
.
|
.
|
||||||
A timeout is employed to limit the algorithm's execution time if no codewords
|
A timeout is used to limit the algorithm's execution time if no codewords
|
||||||
within soft distance
|
within soft distance
|
||||||
\begin_inset Formula $d_{a}$
|
\begin_inset Formula $d_{a}$
|
||||||
\end_inset
|
\end_inset
|
||||||
@ -814,12 +823,12 @@ Algorithm pseudo-code:
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Enumerate
|
\begin_layout Enumerate
|
||||||
For each received symbol, define the erasure probability to be 1.3 times
|
For each received symbol, define the erasure probability as 1.3 times the
|
||||||
the
|
|
||||||
\emph on
|
\emph on
|
||||||
a priori
|
a priori
|
||||||
\emph default
|
\emph default
|
||||||
symbol-error probability determined by the soft-symbol information
|
symbol-error probability determined from soft-symbol information
|
||||||
\begin_inset Formula $\{p_{1}\textrm{-rank},\,p_{2}/p_{1}\}$
|
\begin_inset Formula $\{p_{1}\textrm{-rank},\,p_{2}/p_{1}\}$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
@ -833,8 +842,8 @@ Make independent stochastic decisions about whether to erase each symbol
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Enumerate
|
\begin_layout Enumerate
|
||||||
Attempt errors-and-erasures decoding with the BM algorithm and the set of
|
Attempt errors-and-erasures decoding by using the BM algorithm and the set
|
||||||
eraseures determined in step 2.
|
of eraseures determined in step 2.
|
||||||
If the BM decoder is successful go to step 5.
|
If the BM decoder is successful go to step 5.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
@ -870,12 +879,20 @@ If the number of trials is less than the maximum allowed number, go to 2.
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Enumerate
|
\begin_layout Enumerate
|
||||||
A codeword with
|
A
|
||||||
\begin_inset Formula $d_{s}\le d_{a}$
|
\begin_inset Quotes eld
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
best
|
||||||
|
\begin_inset Quotes erd
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
codeword with
|
||||||
|
\begin_inset Formula $d_{s,min}\le d_{a}$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
has been found.
|
has been found.
|
||||||
Declare a successful decode and return the codeword .
|
Declare a successful decode and return this codeword .
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Section
|
\begin_layout Section
|
||||||
|
Loading…
Reference in New Issue
Block a user