comm.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.

Когда вы устанавливаете это свойство на falsestep значение входных данных метода должно быть числовым, вектор-столбцом целых чисел. Каждый символ, который формирует входной сигнал и выходные кодовые комбинации, является целым числом между 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