comm.LDPCEncoder

Закодируйте бинарный код имеющей малую плотность проверки четности (LDPC)

Описание

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

Закодировать бинарный код LDPC:

  1. Создайте comm.LDPCEncoder объект и набор его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Описание

пример

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 Используя Системные объекты (MATLAB).

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

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

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

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

Примечание

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

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

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

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

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

Описание

пример

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

Входные параметры

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Передайте 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')

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

Смотрите также

Объекты

Функции

Блоки

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