Proximal decoder now return the decoded dataword instead of the codeword
This commit is contained in:
parent
3e7dd37827
commit
323b103d6f
@ -9,7 +9,7 @@ class SoftDecisionDecoder:
|
||||
one with the largest correlation.
|
||||
"""
|
||||
|
||||
# TODO: What is the proper name for 'R'? Is it actually 'decoding matrix'?
|
||||
# TODO: Is 'R' actually called 'decoding matrix'?
|
||||
def __init__(self, G: np.array, H: np.array, R: np.array):
|
||||
"""Construct a new SoftDecisionDecoder object.
|
||||
|
||||
|
||||
@ -5,20 +5,23 @@ class ProximalDecoder:
|
||||
"""Class implementing the Proximal Decoding algorithm. See "Proximal Decoding for LDPC Codes"
|
||||
by Tadashi Wadayama, and Satoshi Takabe.
|
||||
"""
|
||||
# TODO: How large should K be?
|
||||
|
||||
# TODO: Is 'R' actually called 'decoding matrix'?
|
||||
# TODO: How large should eta be?
|
||||
# TODO: How large should step_size be?
|
||||
def __init__(self, H: np.array, K: int = 100, step_size: float = 0.5, gamma: float = 0.05,
|
||||
eta: float = 1.1):
|
||||
def __init__(self, H: np.array, R: np.array, K: int = 100, step_size: float = 0.5,
|
||||
gamma: float = 0.05, eta: float = 1.1):
|
||||
"""Construct a new ProximalDecoder Object.
|
||||
|
||||
:param H: Parity Check Matrix
|
||||
:param R: Decoding matrix
|
||||
:param K: Max number of iterations to perform when decoding
|
||||
:param step_size: Step size for the gradient descent process
|
||||
:param gamma: Positive constant. Arises in the approximation of the prior PDF
|
||||
:param eta: Positive constant slightly larger than one. See 3.2, p. 3
|
||||
"""
|
||||
self._H = H
|
||||
self._R = R
|
||||
self._K = K
|
||||
self._step_size = step_size
|
||||
self._gamma = gamma
|
||||
@ -92,7 +95,7 @@ class ProximalDecoder:
|
||||
|
||||
:param y: Vector of received values. (y = x + w, where 'x' is element of [-1, 1]^n
|
||||
and 'w' is noise)
|
||||
:return: Most probably sent symbol
|
||||
:return: Most probably sent dataword (element of [0, 1]^k)
|
||||
"""
|
||||
s = 0
|
||||
x_hat = 0
|
||||
@ -107,4 +110,4 @@ class ProximalDecoder:
|
||||
if self._check_parity(x_hat):
|
||||
break
|
||||
|
||||
return x_hat
|
||||
return np.dot(self._R, x_hat)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user