exponenta event banner

коммуникация. LDPCEncoder

Кодирование двоичного кода с низкой плотностью проверки на четность (LDPC)

Описание

comm.LDPCEncoder Система object™ применяет кодирование LDPC к двоичному входному сообщению. LDPC-коды представляют собой линейные коды управления ошибками с разреженными матрицами контроля четности и длинными длинами блоков, которые могут достигать производительности вблизи предела Шеннона.

Для кодирования двоичного кода LDPC:

  1. Создать comm.LDPCEncoder и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

пример

ldpcencoder = comm.LDPCEncoder создает двоичный объект системы кодировщика LDPC. Этот объект выполняет кодирование LDPC на основе матрицы проверки четности по умолчанию.

ldpcencoder = comm.LDPCEncoder(parity) устанавливает ParityCheckMatrix свойство для parity и создает объект системы кодировщика LDPC. parity входные данные должны быть указаны в соответствии с описанием ParityCheckMatrix собственность.

ldpcencoder = comm.LDPCEncoder(___,Name,Value) задает свойства, используя одну или несколько пар имя-значение, в дополнение к входам из любого из предыдущих синтаксисов. Например, comm.LDPCEncoder('ParityCheckMatrix',sparse(I(:,1),I(:,2),1)) конфигурирует объект системы кодировщика LDPC для кодирования данных с использованием матрицы четности sparse(I(:,1),I(:,2),1). Заключите каждое имя свойства в кавычки.

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Матрица проверки четности, заданная как разреженная (N - K) -by-N двоично-значная матрица. N - длина выходного сигналаcodeword вектор и должен находиться в диапазоне (0, 231). K - длина некодированного сообщения и должна быть меньше N. Последние (N - K) столбцы в матрице проверки на четность должны быть обратимой матрицей в поле Галуа порядка 2, gf(2).

Можно также указать матрицу проверки четности как матрицу индекса без разбора двух столбцов. I, которая определяет индексы строк и столбцов 1s в матрице контроля четности так, что sparse(I(:,1),I(:,2),1).

Это свойство принимает числовые типы данных. При установке для этого свойства разреженной двоичной матрицы это свойство также принимает logical тип данных.

Значение по умолчанию использует dvbs2ldpc для конфигурирования разреженной матрицы проверки четности для кодирования LDPC с половинной скоростью, как указано в стандарте DVB-S.2.

Примечание

  • Когда последние (N-K) столбцы матрицы проверки на четность образуют треугольную матрицу, выполняется прямая или обратная подстановка для решения уравнения проверки на четность.

  • Когда последние (N-K) столбцы матрицы проверки на четность не образуют треугольную матрицу, выполняется инверсия матрицы для решения уравнения проверки на четность. Если требуется инвертировать большую матрицу, инициализация или обновление занимает больше времени.

Пример: dvbs2ldpc(R,'indices') конфигурирует матрицу индекса для стандарта DVB-S.2, где R - кодовая скорость, и 'indices' задает формат вывода dvbs2ldpc как матрица двойной точности с двумя столбцами, которая определяет индексы строк и столбцов 1s в матрице контроля четности.

Типы данных: double | logical

Использование

Описание

пример

codeword = ldpcencoder(message) кодирует входное сообщение с использованием кода LDPC на основе матрицы проверки на четность. Выход кодового слова LDPC является решением уравнения проверки четности.

Входные аргументы

развернуть все

Входное сообщение, указанное как вектор столбца K-by-1, содержащий элементы с двоичным значением. K - длина некодированного сообщения.

Типы данных: double | logical

Выходные аргументы

развернуть все

Кодовое слово LDPC, возвращаемое как вектор столбца N-by-1. N - количество битов в кодовом слове LDPC. Выходной сигнал наследует тип данных из входного сигнала. Выход кодового слова LDPC является решением уравнения проверки четности. Входное сообщение содержит первые K битов выходного кодового слова LDPC, а проверка на четность содержит оставшиеся (N-K) битов.

Типы данных: double | logical

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Передача кодированного LDPC, модулированного QPSK битового потока через канал AWGN. Демодулируют и декодируют принятый сигнал. Вычислите статистику ошибок для приема некодированных и LDPC-кодированных сигналов.

Определите переменные моделирования. Создание системных объектов для кодера LDPC, декодера LDPC, модулятора QPSK и демодуляторов QPSK.

M = 4; % Modulation order (QPSK)
snr = [0.25,0.5,0.75,1.0,1.25];
numFrames = 10;
ldpcEncoder = comm.LDPCEncoder;
ldpcDecoder = comm.LDPCDecoder;
pskMod = comm.PSKModulator(M,'BitInput',true);
pskDemod = comm.PSKDemodulator(M,'BitOutput',true,...
    'DecisionMethod','Approximate log-likelihood ratio');
pskuDemod = comm.PSKDemodulator(M,'BitOutput',true,...
    'DecisionMethod','Hard decision');
errRate = zeros(1,length(snr));
uncErrRate = zeros(1,length(snr));

Для каждой настройки SNR и всех кадров вычислите статистику ошибок для некодированных и LDPC-кодированных сигналов.

for ii = 1:length(snr)
    ttlErr = 0;
    ttlErrUnc = 0;
    pskDemod.Variance = 1/10^(snr(ii)/10); % Set variance using current SNR
    for counter = 1:numFrames
        data = logical(randi([0 1],32400,1));
        % Transmit and receiver uncoded signal data
        mod_uncSig = pskMod(data);
        rx_uncSig = awgn(mod_uncSig,snr(ii),'measured');
        demod_uncSig = pskuDemod(rx_uncSig);
        numErrUnc = biterr(data,demod_uncSig);
        ttlErrUnc = ttlErrUnc + numErrUnc;
        % Transmit and receive LDPC coded signal data
        encData = ldpcEncoder(data);
        modSig = pskMod(encData);
        rxSig = awgn(modSig,snr(ii),'measured');
        demodSig = pskDemod(rxSig);
        rxBits = ldpcDecoder(demodSig);
        numErr = biterr(data,rxBits);
        ttlErr = ttlErr + numErr;
    end
    ttlBits = numFrames*length(rxBits);
    uncErrRate(ii) = ttlErrUnc/ttlBits;
    errRate(ii) = ttlErr/ttlBits;
end

Постройте график статистики ошибок для некодированных и LDPC-кодированных данных.

plot(snr,uncErrRate,snr,errRate)
legend('Uncoded', 'LDPC coded')
xlabel('SNR (dB)')
ylabel('BER')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Uncoded, LDPC coded.

Расширенные возможности

.

См. также

Объекты

Функции

Блоки

Представлен в R2012a