1

我想学习LDPC,我想模拟一个程序。该程序将在随机生成的 1x32000 大小的二进制数组上使用 LDPC,然后使用 16-QAM 进行调制,在 SNR=20dB 时添加噪声,对 16-QAM 进行解调,最后使用 LDPC 对其进行解码。当我运行程序并检查它的 BER 时,我得到了 %90 左右的错误,这绝对是不正确的。你能帮助我吗?

clear all
clc
M = 16;
SNR = 20;

ldpcEncoder = comm.LDPCEncoder(dvbs2ldpc(1/2));
ldpcDecoder = comm.LDPCDecoder(dvbs2ldpc(1/2));

data = randi([0 1],32400,1);
newData = ldpcEncoder(data);

a = qammod(newData,M,'InputType','bit');

b = awgn(a,SNR,'measured');

c = qamdemod(b,M,'OutputType','bit');

result = ldpcDecoder(c);
error = biterr(data,result)/length(data)
4

1 回答 1

1

LDPC 解码器对象期望输入具有“软”位(对数似然比),而您正在输入“硬”单极位。所以,换行

c = qamdemod(b,M,'OutputType','bit');

经过

c = qamdemod(b,M,'OutputType','llr');
于 2020-08-01T11:17:28.283 回答