коммуникация. 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', который является результатом fliplr(de2bi(primpoly(4))).

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 Декодирование Только для ошибок.

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

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

| | | |