comm.BCHEncoder

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

Описание

The BCHEncoder создает код BCH с заданными длиной сообщений и кодовых слов.

Для кодирования данных с использованием схемы BCH-кодирования:

  1. Определите и настройте объект энкодера BCH. См. «Конструкция».

  2. Функции step создать код BCH с сообщениями и длинами кодовых слов, заданными в соответствии со свойствами comm.BCHEncoder. Поведение step характерен для каждого объекта в тулбоксе.

Примечание

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

Конструкция

enc = comm.BCHEncoder создает Системный объект BCH-энкодера, enc, который выполняет кодирование BCH.

enc = comm.BCHEncoder(N,K) создает объект энкодера BCH, enc, с CodewordLength значение свойства установлено в N и MessageLength значение свойства установлено в K.

enc = comm.BCHEncoder(N,K,GP) создает объект энкодера BCH, enc, с CodewordLength значение свойства установлено в N, а MessageLength значение свойства установлено в K и GeneratorPolynomial значение свойства установлено в GP.

enc = comm.BCHEncoder(N,K,GP,S) создает объект энкодера BCH, enc, с CodewordLength значение свойства установлено в N, а MessageLength значение свойства установлено в K, а GeneratorPolynomial значение свойства установлено в GP и ShortMessageLength значение свойства установлено в S.

enc = comm.BCHEncoder(N,K,GP,S,Name,Value) создает объект энкодера BCH, enc, с CodewordLength значение свойства установлено в N, а MessageLength значение свойства установлено в K, а GeneratorPolynomial значение свойства установлено в GP, а ShortMessageLength значение свойства установлено в S, и каждое заданное свойство Name установить на заданную Value.

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

Свойства

Примечание

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

CodewordLength

Длина кодового слова

Задайте длину кодового слова кода BCH как положительный целочисленный скаляр двойной точности. Значение по умолчанию является 15. Значения CodewordLength и MessageLength свойства должны создавать действительный узкополосный код BCH. Для полноразмерного кода BCH значение свойства должно использовать форму 2M1, где M является целым числом, таким что 3M16. Значение по умолчанию является 15.

MessageLength

Длина сообщения

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

ShortMessageLengthSource

Короткий источник длины сообщения

Укажите источник укороченного сообщения следующим образом Auto или Property. Когда для этого свойства задано значение Auto, код BCH определяется CodewordLength, MessageLength, GeneratorPolynomial, и PrimitivePolynomial свойства. Когда ShortMessageLengthSource установлено в Property, вы должны задать ShortMessageLength свойство, которое используется с другими свойствами для определения кода RS. Значение по умолчанию является Auto.

ShortMessageLength

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

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

GeneratorPolynomialSource

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

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

GeneratorPolynomial

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

Задайте полином генератора как двоичный вектор-строка двойной точности, двоичный вектор-строку Галуа, который представляет коэффициенты полинома генератора в порядке нисходящих степеней или как полиномиальный вектор символов. Длина полинома генератора требует значения CodewordLengthMessageLength-+<reservedrangesplaceholder0>. Это свойство применяется при установке GeneratorPolynomialSource на Property. Значение по умолчанию является 'X^10 + X^8 + X^5 + X^4 + X^2 + X + 1', что является результатом bchgenpoly(15,5,[],'double') и соответствует (15,5) коду.

CheckGeneratorPolynomial

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

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

PrimitivePolynomialSource

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

Задайте источник примитивного полинома как один из Auto или Property. Установите это свойство на Auto создать примитивный полином степени M = ceil (log2 (CodewordLength+1)). Установите значение Property чтобы задать полином, используя PrimitivePolynomial свойство. Значение по умолчанию является Auto

PrimitivePolynomial

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

Задайте примитивный полином порядка M, который задает конечное поле Галуа GF (2). Используйте двойную точность, двоичный вектор-строку с коэффициентами полинома в порядке убывания степеней или как полиномиальный вектор символов. Это свойство применяется, когда вы устанавливаете PrimitivePolynomialSource свойство к Property. Значение по умолчанию является 'X^4 + X + 1', что является результатом fliplr(de2bi(primpoly(4))).

PuncturePatternSource

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

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

PuncturePattern

Вектор пунктирного шаблона

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

Методы

шагЗакодируйте данные с помощью энкодера
Общий для всех системных объектов
release

Разрешить изменение значения свойства системного объекта

Примеры

свернуть все

% The following code transmits a BCH-encoded, 8-DPSK-modulated bit stream
% through an AWGN channel.  Then, the example demodulates, decodes, and counts errors.

enc = comm.BCHEncoder;
mod = comm.DPSKModulator('BitInput',true);
chan = comm.AWGNChannel(...
         'NoiseMethod','Signal to noise ratio (SNR)','SNR',10);
demod = comm.DPSKDemodulator('BitOutput',true);                                  
dec = comm.BCHDecoder;
errorRate = comm.ErrorRate('ComputationDelay',3);

for counter = 1:20
  data = randi([0 1], 30, 1);
  encodedData = step(enc, data);
  modSignal = step(mod, encodedData);
  receivedSignal = step(chan, modSignal);
  demodSignal = step(demod, receivedSignal);
  receivedBits = step(dec, demodSignal);
  errorStats = step(errorRate, data, receivedBits);
end

fprintf('Error rate = %f\nNumber of errors = %d\n', ...
  errorStats(1), errorStats(2))
Error rate = 0.015075
Number of errors = 9

Передайте и примите сигнал с модуляцией BPSK, закодированный с укороченного кода BCH, затем подсчитайте ошибки.

Задайте кодовое слово, сообщение и укороченные длины сообщений.

N = 255;
K = 239;
S = 63;

Создайте полином генератора BCH (255 239). Используйте полином генератора, чтобы создать пару энкодера и декодера. Код BCH основан на стандарте AMR.

gp = bchgenpoly(255,239);
bchEncoder = comm.BCHEncoder(N,K,gp,S);
bchDecoder = comm.BCHDecoder(N,K,gp,S);

Создайте счетчик частоты ошибок.

errorRate = comm.ErrorRate('ComputationDelay',3);

Основной цикл обработки.

for counter = 1:20
  data = randi([0 1],630,1);                 % Generate binary data
  encodedData = bchEncoder(data);            % BCH encode data
  modSignal = pskmod(encodedData,2);         % BPSK modulate
  receivedSignal = awgn(modSignal,5);        % Pass through AWGN channel
  demodSignal = pskdemod(receivedSignal,2);  % BSPK demodulate
  receivedBits = bchDecoder(demodSignal);    % BCH decode data
  errorStats = errorRate(data,receivedBits); % Compute error statistics
end

Отображение статистики ошибок.

fprintf('Error rate = %f\nNumber of errors = %d\n', ...
  errorStats(1), errorStats(2))
Error rate = 0.000318
Number of errors = 4

Сократите (31,26) код BCH до (11,6) кода BCH и используйте его для кодирования и декодирования случайных двоичных данных.

Создайте пару энкодера и декодера BCH для (31,26) кода. Задайте полином генератора, x5+x2+1и сокращенную длину сообщения 6.

enc = comm.BCHEncoder(31,26,'x5+x2+1',6);
dec = comm.BCHDecoder(31,26,'x5+x2+1',6);

Закодируйте и декодируйте случайные двоичные данные и проверьте, что декодированный битовый поток совпадает с исходными данными.

x = randi([0 1],60,1);
y = step(enc,x);
z = step(dec,y);
isequal(x,z)
ans = logical
   1

Избранная библиография

[1] Clark, George C. Jr., and J. Bibb Cain, Error-Correction Coding for Digital Communications. Нью-Йорк, Пленум Пресс, 1981.

[2] Wicker, Stephen B., Error Control Systems for Digital Communication and Storage Upper Saddle River, NJ, Prentice Hall, 1995.

Алгоритмы

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

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

.
Для просмотра документации необходимо авторизоваться на сайте