因此,我在这个包中使用基于python的ldpc包https://hichamjanati.github.io/pyldpc/,对于我的项目中的一些约束,我不能使用信噪比值。我只能将具有一定概率的位翻转应用于整个编码消息。但是有了这个包,似乎信噪比值是必须的。
from pyldpc import make_ldpc, encode, decode, get_message
n = 15
d_v = 4
d_c = 5
snr = 20
H, G = make_ldpc(n, d_v, d_c, systematic=True, sparse=True)
k = G.shape[1]
print('K:', k)
v = np.random.randint(2, size=k)
print('V:', v)
y = encode(G, v, snr)
print('Encode:', y)
if y[1] == 1:
y[1] = 0
else:
y[1] = 1
print('Corrupted:', y)
d = decode(H, y, snr)
print('Decode:', y)
x = get_message(G, d)
print('Get message:', x)
(忽略我以某种方式关闭的snr变量)。
当我继续强行关闭信噪比参数并自行应用位翻转错误时,解码器无法纠正它,给出了一条消息。
UserWarning: Decoding stopped before convergence. You may want to increase maxiter
warnings.warn("Decoding stopped before convergence.")
在这个包中是否有适当的方法来实现简单的位翻转?提前谢谢。
发布于 2022-07-22 09:41:15
之后,位翻转几乎等于软数据符号的逆。
encode(G, v, snr)
我认为你犯了太多错误,而解码器无法破译。
附注:请注意,这个包使用SP-解码,它对信噪比估计的正确性非常敏感(并且构造的方法只适用于高斯噪声,而不是带有擦除或倒置模拟输入数据的信道)。最好尝试使用对snr估计不敏感的MS译码器。
https://stackoverflow.com/questions/72997436
复制相似问题