коммуникация. 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.

Когда вы устанавливаете это свойство на false,  значение входных данных метода step должно быть числовым, вектор-столбцом целых чисел.  Метод 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,[],[],'double'), который соответствует [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