comm.gpu.LDPCDecoder

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

Чтобы использовать этот объект, необходимо установить Parallel Computing Toolbox™ и иметь доступ к соответствующему графическому процессору. Для больше о графических процессорах, смотрите, что графический процессор Вычисляет (Parallel Computing Toolbox).

Описание

Основанная на графическом процессоре Система object™ принимает типичный MATLAB® массивы или объекты создали использование gpuArray класс. Основанный на графическом процессоре Системный объект поддерживает входные сигналы с двойным - или типы данных с одинарной точностью. Выходной сигнал наследовал свой тип данных от входного сигнала.

  • Если входной сигнал является массивом MATLAB, Системный объект обрабатывает передачу данных между центральным процессором и графическим процессором. Выходной сигнал является массивом MATLAB.

  • Если входным сигналом является gpuArray, данные остаются на графическом процессоре. Выходным сигналом является gpuArray. Когда объекту дают gpuArray, вычисления происходят полностью на графическом процессоре, и никакая передача данных не происходит. Передача gpuArray аргументы обеспечивают увеличенную эффективность путем сокращения времени симуляции. Для получения дополнительной информации смотрите, Устанавливают Массивы на графическом процессоре (Parallel Computing Toolbox).

comm.gpu.LDPCDecoder Системный объект использует алгоритм распространения веры, чтобы декодировать бинарный код LDPC, который вводится к объекту как мягкое решение выход (отношение логарифмической правдоподобности полученных битов) от демодуляции. Объект декодирует типовые бинарные коды LDPC, где никакие шаблоны в матрице проверки четности не приняты. Для получения дополнительной информации смотрите, что Распространение Веры Декодирует.

Декодировать LDPC-закодированный сигнал:

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

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

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

Создание

Описание

пример

gpu_ldpcdecoder = comm.gpu.LDPCDecoder создает основанный на графическом процессоре бинарный Системный объект декодера LDPC. Этот объект выполняет LDPC, декодирующий на основе заданной матрицы проверки четности.

gpu_ldpcdecoder = comm.gpu.LDPCDecoder(parity) устанавливает ParityCheckMatrix свойство к parity и создает основанный на графическом процессоре Системный объект декодера LDPC. parity введите должен быть задан аналогичный описанному ParityCheckMatrix свойство.

gpu_ldpcdecoder = comm.gpu.LDPCDecoder(___,Name,Value) свойства наборов с помощью одной или нескольких пар "имя-значение", в дополнение к входным параметрам от любого из предшествующих синтаксисов. Например, comm.LDPCDecoder('DecisionMethod','Soft decision') конфигурирует Системный объект декодера LDPC, чтобы декодировать данные с помощью метода мягкого решения и вывести отношения логарифмической правдоподобности типа данных double. Заключите каждое имя свойства в кавычки.

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.

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

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

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

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

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

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

Формат выходного значения в виде одного из этих значений:

  • 'Information part' — Объектные выходные параметры K-by-1 вектор-столбец, содержащий только информационную часть полученного вектора отношения логарифмической правдоподобности. K является длиной незакодированного сообщения.

  • 'Whole codeword' — Объектные выходные параметры N-by-1 вектор-столбец, содержащий целый вектор отношения логарифмической правдоподобности. N является длиной полученного сигнала.

    N и K должны выровняться с размерностью (NK)-by-K матрица проверки четности.

Типы данных: char

Метод решения использовал для декодирования в виде одного из этих значений:

  • 'Hard decision' — Объектные выходные параметры декодировали данные типа данных logical.

  • 'Soft decision' — Объектные выходные отношения логарифмической правдоподобности типа данных double.

Типы данных: char

Условие для завершения итерации в виде одного из этих значений:

  • 'Maximum iteration count' — Декодирование завершает работу после количества итераций, заданных MaximumIterationCount свойство.

  • 'Parity check satisfied' — Декодирование завершает работу после того, как всем проверкам четности удовлетворяют. Если не всем проверкам четности удовлетворяют, декодирование завершает работу после количества итераций, заданных MaximumIterationCount свойство.

Типы данных: char

Максимальное количество декодирования итераций в виде положительного целого числа.

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

Выведите количество итераций, выполняемых в виде false или true. Чтобы вывести количество выполняемых итераций, установите это свойство на true.

Типы данных: логический

Выведите итоговые проверки четности в виде false или true. Выводить финал вычислило проверки четности, установите это свойство на true.

Типы данных: логический

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

Описание

пример

y = gpu_ldpcdecoder(x) декодирует входные данные с помощью кода LDPC на основе матрицы проверки четности по умолчанию.

[y,numiter] = gpu_ldpcdecoder(x) возвращает декодируемые данные, y, и количество выполняемых итераций, numiter. Чтобы использовать этот синтаксис, установите NumIterationsOutputPort свойство к true.

[y,parity] = gpu_ldpcdecoder(x) возвращает декодируемые данные, y, и итоговые проверки четности, parity. Чтобы использовать этот синтаксис, установите FinalParityChecksOutputPort свойство к true.

[y,numiter,parity] = gpu_ldpcdecoder(x) возвращает декодируемые данные, количество итераций выполняемые, и итоговые проверки четности. Чтобы использовать этот синтаксис, установите NumIterationsOutputPort и FinalParityChecksOutputPort свойства к true.

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

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

Отношения логарифмической правдоподобности в виде N-by-1 вектор-столбец, содержащий мягкое решение, выводятся от демодуляции. N является количеством битов в кодовой комбинации LDPC перед модуляцией. Каждым элементом является отношение логарифмической правдоподобности для полученного бита. Значениями элемента, более вероятно, будет 0 если отношение логарифмической правдоподобности положительно. Первые элементы K соответствуют информационной части входного сигнала.

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

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

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

Декодируемые данные, возвращенные как вектор-столбец. DecisionMethod свойство задает ли объектные выходные трудные решения или мягкие решения (отношения логарифмической правдоподобности).

  • Если OutputValue свойство установлено в 'Information part', выход включает только информационную часть полученного вектора отношения логарифмической правдоподобности.

  • Если OutputValue свойство установлено в 'Whole codeword', выход включает целый вектор отношения логарифмической правдоподобности.

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

Количество выполняемых итераций декодирования, возвращенных как положительное целое число.

Зависимости

Чтобы включить этот выход, установите NumIterationsOutputPort свойство к true.

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

Зависимости

Чтобы включить этот выход, установите FinalParityChecksOutputPort свойство к true.

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

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

release(obj)

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

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

Примеры

свернуть все

Используя comm.gpu.LDPCDecoder Система Object™, чтобы декодировать сигнал, передайте LDPC-закодированный, модулируемый QPSK поток битов через канал AWGN. После добавления AWGN демодулируйте и декодируйте полученный сигнал. Вычислите статистику ошибок для приема незакодированных и LDPC-закодированных сигналов. Для получения дополнительной информации смотрите, что Ускорение Симуляции Использует графические процессоры.

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

M = 4; % Modulation order (QPSK)
snr = [0.25,0.5,0.75,1.0,1.25];
numFrames = 10;
gpuldpcDecoder = comm.gpu.LDPCDecoder;
encoderCfg = ldpcEncoderConfig(gpuldpcDecoder.ParityCheckMatrix);
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 = ldpcEncode(data,encoderCfg);
        modSig = pskMod(encData);
        rxSig = awgn(modSig,snr(ii),'measured');
        demodSig = pskDemod(rxSig);
        rxBits = gpuldpcDecoder(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')

Алгоритмы

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

Этот объект выполняет LDPC, декодирующий использование алгоритма распространения веры, также известного как алгоритм передачи сообщений.

Ссылки

[1] Gallager, Роберт Г. Имеющие малую плотность коды с проверкой четности. Кембридж, MA: нажатие MIT, 1963.

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

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