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

Закодируйте данные с помощью энкодера Тростника-Solomon

Описание

Объект RSEncoder создает код Тростника-Solomon с сообщением и длинами кодовой комбинации, которые вы задаете.

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

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

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

Примечание

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

Конструкция

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

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

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

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

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

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

Свойства

Примечание

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

BitInput

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

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

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

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

CodewordLength

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

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

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

MessageLength

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

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

ShortMessageLengthSource

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

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

ShortMessageLength

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

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

GeneratorPolynomialSource

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

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

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

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

GeneratorPolynomial

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

Задайте полином генератора для кода RS как целочисленный вектор - строка с двойной точностью или как вектор - строка Галуа. Записи вектора - строки Галуа должны быть в диапазоне от 0 до 2M-1. Эти записи должны представлять полином генератора в порядке убывания степеней. Каждый коэффициент является элементом Поля Галуа gf (2M), представленный в целочисленном формате. Длиной полинома генератора должен быть CodewordLengthMessageLength + 1.

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

CheckGeneratorPolynomial

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

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

PrimitivePolynomialSource

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

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

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

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

PrimitivePolynomial

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

Задайте примитивный полином, который задает конечное поле gf (2M), соответствующее целым числам, которые формируют сообщения и кодовые комбинации. Задайте это свойство как вектор строки двоичных знаков с двойной точностью, который представляет примитивный полином по gf (2) из степени M в порядке убывания степеней.

Если CodewordLength является меньше, чем 2M–1, объект использует сокращенный код RS. Значением по умолчанию является результат fliplr (de2bi (primpoly (3))), который является [1 0 1 1] или полином x3+x+1.

Это свойство применяется, когда вы устанавливаете PrimitivePolynomialSource на Property.

PuncturePatternSource

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

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

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

PuncturePattern

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

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

OutputDataType

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

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

Методы

шагЗакодируйте данные с помощью энкодера Тростника-Solomon
Характерный для всех системных объектов
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