Моделируйте LDP C и QAM в MATLAB - PullRequest
1 голос
/ 01 августа 2020

Я хочу изучить LDP C и смоделировать программу. Эта программа будет использовать LDP C на случайно сгенерированном двоичном массиве размером 1x32000, затем он будет модулировать с помощью 16-QAM, добавлять шум для SNR = 20 дБ, выполнять демодуляцию для 16-QAM и, наконец, декодировать его с помощью LDP C. Когда я запускаю программу и проверяю ее на 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)

1 Ответ

1 голос
/ 01 августа 2020

Объект декодера LDP C ожидает ввода с «мягкими» битами (логарифмическое отношение правдоподобия), в то время как вы загружаете его «жесткими» униполярными битами. Итак, замените строку

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

на

c = qamdemod(b,M,'OutputType','llr');
...