comm.RSDecoder

Декодируйте данные с помощью декодера кода Рида-Соломона

Описание

RSDecoder объект восстанавливает вектор сообщения с вектора кодовой комбинации Тростника-Solomon. Для соответствующего декодирования значения свойств для этого объекта должны совпадать со значениями свойств в соответствующем объекте RS Encoder.

Декодировать данные с помощью схемы декодирования Тростника-Solomon:

  1. Задайте и настройте свой объект декодера кода Рида-Соломона. Смотрите Конструкцию.

  2. Вызовите step декодировать данные согласно свойствам comm.RSDecoder. Поведение step характерно для каждого объекта в тулбоксе.

Примечание

Запуск в R2016b, вместо того, чтобы использовать step метод, чтобы выполнить операцию, заданную Системой object™, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполните эквивалентные операции.

Конструкция

dec = comm.RSDecoder создает Системный объект блочного декодера, dec. Этот объект выполняет декодирование Тростника-Solomon (RS).

dec = comm.RSDecoder(N,K) создает объект декодера RS, dec с CodewordLength набор свойств к N и MessageLength набор свойств к K.

dec = comm.RSDecoder(N,K,GP) создает объект декодера RS, dec с CodewordLength набор свойств к N, MessageLength набор свойств к K, и GeneratorPolynomial набор свойств к GP.

dec = comm.RSDecoder(N,K,GP,S) создает объект декодера RS, dec с CodewordLength набор свойств к N, MessageLength набор свойств к K, GeneratorPolynomial набор свойств к GP, и ShortMessageLength набор свойств к S.

dec = comm.RSDecoder(N,K,GP,S,Name,Value) создает объект декодера RS, dec с CodewordLength набор свойств к N, MessageLength набор свойств к K, GeneratorPolynomial набор свойств к GP, и каждое заданное свойство Name установите на заданный Value.

dec = comm.RSDecoder(Name,Value) создает объект декодера RS, dec, с каждым заданным набором имени свойства к заданному значению. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN).

Свойства

Примечание

Длины сигнала ввода и вывода перечислены в Длинах Сигнала Ввода и вывода в BCH и Системных объектах RS на comm.BCHDecoder страница с описанием.

BitInput

Примите, что вводит, биты

Задайте, включает ли вход биты или целые числа. Значением по умолчанию является false.

Когда вы устанавливаете это свойство на falsestep значение входных данных метода должно быть числовым, вектор-столбцом целых чисел. step метод выводит закодированный вектор вывода данных. Выходным результатом является вектор-столбец целых чисел. Каждый символ, который формирует входной сигнал и выходные кодовые комбинации, является целым числом между 0 и 2M – 1. Эти целые числа соответствуют элементу конечного Поля Галуа gf(2M)M является степенью примитивного полинома, который вы задаете с PrimitivePolynomialSource и PrimitivePolynomial свойства.

Когда вы устанавливаете это свойство на true, входное значение должно быть числовым, вектор-столбцом битов. Закодированным результатом вывода данных является вектор-столбец битов.

CodewordLength

Длина кодовой комбинации

Задайте длину кодовой комбинации кода RS в символах как положительное, значение целочисленного скаляра с двойной точностью. Значением по умолчанию является 7.

Для кода RS во всю длину значение этого свойства должно быть 2M–1, где M является целым числом, таким образом что 3M 16.

MessageLength

Передайте длину

Задайте длину сообщения в символах как положительное значение целочисленного скаляра с двойной точностью. Значением по умолчанию является 3.

ShortMessageLengthSource

Источник длины короткого сообщения

Задайте источник сокращенного сообщения как Auto или Property. Когда это свойство установлено в Auto, код RS задан CodewordLength, MessageLength, GeneratorPolynomial, и PrimitivePolynomial свойства.

Когда ShortMessageLengthSource установлен в Property, необходимо задать ShortMessageLength свойство, которое используется с другими свойствами задать код RS. Значением по умолчанию является Auto.

ShortMessageLength

Сокращенная длина сообщения

Задайте длину сокращенного сообщения в символах как положительный целочисленный скаляр с двойной точностью, значение которого должно быть меньше чем или равно MessageLength.

Когда ShortMessageLength <MessageLength, код RS сокращен. Значением по умолчанию является 3.

GeneratorPolynomialSource

Источник полинома генератора

Задайте источник полинома генератора как Auto или Property. Значением по умолчанию является Auto.

Когда вы устанавливаете это свойство на Auto, объект выбирает полином генератора автоматически. Объект вычисляет полином генератора на основе значения PrimitivePolynomialSource свойство.

Когда вы устанавливаете это свойство на Auto, объект автоматически выбирает полином генератора. Объект вычисляет полином генератора на основе значения PrimitivePolynomial  свойство.

Когда вы устанавливаете это свойство на Свойство, необходимо задать полином генератора использование GeneratorPolynomial  свойство.

GeneratorPolynomial

Полином генератора

Задайте полином генератора для кода RS как целочисленный вектор-строка с двойной точностью или как вектор-строка Поля Галуа, записи которого находятся в диапазоне от 0 до 2M–1 и представляют полином генератора в порядке убывания степеней. Длиной полинома генератора должен быть CodewordLength- MessageLength+1. Это свойство применяется, когда вы устанавливаете GeneratorPolynomialSource к Property.

Значением по умолчанию является результат rsgenpoly(7,3, [], [], 'дважды'), который соответствует [1 3 1 2 3].

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

CheckGeneratorPolynomial

Включите проверку полинома генератора

Установите это свойство на true выполнять проверку полинома генератора. Значением по умолчанию является true. Эта проверка проверяет, что заданный полином генератора допустим.

Для больших кодов, отключая проверку ускоряет время вычислений. Как лучшая практика, выполните проверку, по крайней мере, однажды устанавливающую это свойство на false. Это свойство применяется, когда вы устанавливаете GeneratorPolynomialSource к Property.

PrimitivePolynomialSource

Источник примитивного полинома

Задайте источник примитивного полинома как Auto или Property. Значением по умолчанию является Auto.

Когда вы устанавливаете это свойство на Auto, объект использует примитивный полином степени M = ceil(log2 (CodewordLength+1)).

Когда вы setPrimitivePolynomialSource к Property, необходимо задать полином с помощью PrimitivePolynomial.

PrimitivePolynomial

Примитивный полином

Задайте примитивный полином, который задает конечное поле gf(2M) соответствие целым числам, которые формируют сообщения и кодовые комбинации. Значением по умолчанию является результат fliplr(de2bi(primpoly(3))), который является [1 0 1 1] или полином x3+x+1. Задайте это свойство как бинарный, вектор-строку с двойной точностью, который представляет примитивный полином по GF(2) из степени M в порядке убывания степеней. Это свойство применяется, когда вы устанавливаете PrimitivePolynomialSource к Property.

PuncturePatternSource

Источник шаблона прокола

Задайте источник шаблона прокола как None или Property. Значением по умолчанию является None.

Если вы устанавливаете это свойство на None, объект не применяет прокалывание к коду. Если вы устанавливаете его на Property, объект прокалывает код на основе вектора шаблона прокола, заданного в PuncturePattern.

PuncturePattern

Проколите вектор шаблона

Укажите, что шаблон раньше прокалывал закодированные данные как вектор столбца двоичных данных с двойной точностью длины CodewordLengthMessageLength(-). Значением по умолчанию является [ones(2,1); zeros(2,1)]. Нули в векторе шаблона прокола указывают на положение символов четности, которые проколоты или исключены из каждой кодовой комбинации. Это свойство применяется, когда вы устанавливаете PuncturePatternSource к Property.

ErasuresInputPort

Включите вход стираний

Установите это свойство на true задавать вектор стираний как вход к step метод. Значением по умолчанию является false. Вход стираний должен быть двойная точность или логический вектор столбца двоичных данных, который указывает который символы входных кодовых комбинаций стереться.

Длина вектора стираний объяснена в Длинах Сигнала Ввода и вывода в Системных объектах RS и BCH.

Когда это свойство установлено в false, объект не принимает стираний.

NumCorrectedErrorsOutputPort

Включите количество откорректированных ошибок выход

Установите это свойство на true получить количество откорректированных ошибок как выход к step метод. Значением по умолчанию является true. Неотрицательное значение в i-th элемент вектора вывода ошибок, обозначает количество откорректированных ошибок в i-th входная кодовая комбинация. Значение -1 в i-th элемент вектора вывода ошибок указывает, что ошибка декодирования произошла для той кодовой комбинации. Ошибка декодирования происходит, когда входная кодовая комбинация имеет больше ошибок, чем поддержка исправления ошибок кода RS.

OutputDataType

Тип данных выхода

Задайте тип выходных данных как Same as input'double', или logical. Значением по умолчанию является Same as input. Это свойство применяется, когда вы устанавливаете BitInput к true.

Методы

шагДекодируйте данные с помощью декодера кода Рида-Соломона
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

свернуть все

Передайте закодированный RS, 8 DPSK модулировали поток символа через канал AWGN. Затем демодулируйте, декодируйте, и ошибки количества.

    enc = comm.RSEncoder;
    mod = comm.DPSKModulator('BitInput',false);
    chan = comm.AWGNChannel(...
                'NoiseMethod','Signal to noise ratio (SNR)','SNR',10);
    demod = comm.DPSKDemodulator('BitOutput',false);
    hDdecec = comm.RSDecoder;
    errorRate = comm.ErrorRate('ComputationDelay',3);

    for counter = 1:20
      data = randi([0 7], 30, 1);
      encodedData = step(enc, data);
      modSignal = step(mod, encodedData);
      receivedSignal = step(chan, modSignal);
      demodSignal = step(demod, receivedSignal);
      receivedSymbols = step(hDdecec, demodSignal);
      errorStats = step(errorRate, data, receivedSymbols);            
    end      
      
  fprintf('Error rate = %f\nNumber of errors = %d\n', ...
      errorStats(1), errorStats(2))
Error rate = 0.115578
Number of errors = 69

Передайте закодированный RS сокращенный, 256-QAM-modulated поток символа через канал AWGN. Затем демодулируйте, декодируйте, и ошибки количества.

Установите параметры для кода Тростника-Solomon, где N длина кодовой комбинации, K номинальная длина сообщения и S сокращенная длина сообщения. Установите порядок модуляции, M, и количество систем координат, L.

N = 255;
K = 239;
S = 188;
M = 256;
L = 50;

Создайте Системный объект канала AWGN и Системный объект коэффициента ошибок.

awgnChan = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (Eb/No)', ...
    'EbNo',15,'BitsPerSymbol',log2(M));
errorRate = comm.ErrorRate('ComputationDelay',3);

Создайте полином генератора Тростника-Solomon из стандарта DVB-T.

gp = rsgenpoly(N,K,[],0);

Создайте пару энкодера и декодера Тростника-Solomon использование сокращенной длины сообщения, S, и полином генератора DVB-T, gp.

enc = comm.RSEncoder(N,K,gp,S);
dec = comm.RSDecoder(N,K,gp,S);

Сгенерируйте случайные системы координат символа, длина которых равняется одному блоку сообщения. Закодируйте, модулируйте, примените AWGN, демодулируйте, декодируйте и соберите статистические данные.

for counter = 1:L
    data = randi([0 1],S,log2(M));
    encodedData = step(enc,bi2de(data));
    modSignal = qammod(encodedData,M,'UnitAveragePower',true);
    rxSignal = awgnChan(modSignal);
    demodSignal = qamdemod(rxSignal,M,'UnitAveragePower',true);
    rxBits = dec(demodSignal);
    dataOut = de2bi(rxBits);
    errorStats = errorRate(data(:),dataOut(:));
end

Отобразите коэффициент ошибок и количество ошибок.

fprintf('Error rate = %5.2e\nNumber of errors = %d\n', ...
    errorStats(1), errorStats(2))
Error rate = 2.01e-02
Number of errors = 1509

Алгоритмы

Этот объект реализует алгоритм, входные параметры и выходные параметры, описанные в Алгоритмах для BCH и RS Декодирование Только для ошибок.

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

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

| | | |

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