comm.BCHEncoder

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

Описание

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-+1. Это свойство применяется, когда вы устанавливаете GeneratorPolynomialSource к Property. Значением по умолчанию является 'X^10 + X^8 + X^5 + X^4 + X^2 + X + 1', который является результатом bchgenpoly(15,5,[],'double') и соответствует (15,5) код.

CheckGeneratorPolynomial

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

Установите это свойство на true чтобы выполнить проверку порождающего полинома в первый раз, вы вызываете step метод. Эта проверка проверяет, что заданный порождающий полином допустим. Для больших кодов, отключая проверку уменьшает время вычислений. Как лучшая практика, выполните проверку, по крайней мере, однажды устанавливающую это свойство на ложь. Это свойство применяется, когда вы устанавливаете 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', который является результатом int2bit(primpoly(4),5)'.

PuncturePatternSource

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

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

PuncturePattern

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

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

Методы

шагЗакодируйте данные с помощью энкодера BCH
Характерный для всех системных объектов
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. Код 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] Кларк, Джордж К. Младший, и J. Затвор Каин, кодирование с коррекцией ошибок для цифровой связи. Нью-Йорк, нажатие пленума, 1981.

[2] Ивовый прут, Стивен Б., системы контроля ошибок для цифровой связи и устройства хранения данных верхний Сэддл-Ривер, NJ, Prentice Hall, 1995.

Алгоритмы

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

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

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

| | | |