comm.BCHDecoder

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

Описание

BCHDecoder объект восстанавливает вектор двоичного сообщения с бинарного вектора кодовой комбинации BCH. Для соответствующего декодирования кодовая комбинация и значения длины сообщения в этом объекте должны совпадать со свойствами в соответствующем comm.BCHEncoder Система object™.

Декодировать двоичное сообщение от кодовой комбинации BCH:

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

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

Примечание

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

Конструкция

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

dec = comm.BCHDecoder(N,K) создает объект декодера BCH, dec, с CodewordLength набор свойств к N и MessageLength набор свойств к K.

dec = comm.BCHDecoder(N,K,GP) создает объект декодера BCH, dec, с CodewordLength набор свойств к N, MessageLength набор свойств к K, и GeneratorPolynomial набор свойств к GP.

dec = comm.BCHDecoder(N,K,GP,S) создает объект декодера BCH, dec, с CodewordLength набор свойств к N, MessageLength набор свойств к K, GeneratorPolynomial набор свойств к GP, и ShortMessageLength набор свойств к S.

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

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

Свойства

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 свойство, которое используется с другими свойствами задать код BCH. Значением по умолчанию является Auto.

ShortMessageLength

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

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

GeneratorPolynomialSource

Источник порождающего полинома

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

PrimitivePolynomialSource

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

Задайте источник примитивного полинома как Auto или Property. Установите это свойство на Auto создать примитивный полином степени M =ceil (log2 (CodewordLength+1)). Установите PrimitivePolynomialSource к 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

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

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

ErasuresInputPort

Включите вход стираний

Установите это свойство на true задавать вектор из стираний как step метод вводится. Вектор стираний является двойной точностью или логическим вектором столбца двоичных данных, который указывает который биты входных кодовых комбинаций стереть или проигнорировать. Значения 1 в стираниях вектор соответствуют стертым битам в том же положении (возможно проколотый) входные кодовые комбинации. Установите это свойство на false отключить стирания. Значением по умолчанию является false.

NumCorrectedErrorsOutputPort

Выведите количество откорректированных ошибок

Установите это свойство на true так, чтобы step метод выводит количество откорректированных ошибок. Значением по умолчанию является true.

Длины сигнала ввода и вывода в BCH и системных объектах RS

Обозначение y = c * x обозначает тот y целочисленное кратное x.

number of punctures равняется количеству нулей в векторе прокола.

M является степенью примитивного полинома. Каждая группа битов M представляет целое число между 0 и 2M–1 это принадлежит конечному полю Галуа GF (2M).

ShortMessageLengthSource

comm.BCHEncoder

comm.RSEncoder (BitInput = false)

comm.BCHDecoder

comm.RSDecoder (BitInput = false)

comm.RSEncoder (BitInput = true)

comm.RSDecoder (BitInput = true)

'auto'

Input Length:

c * MessageLength

Output Length:

c * ( CodewordLength – number of punctures)

Input Length:

c * (CodewordLength – number of punctures)

Output Length:

c * MessageLength

Erasures Length:

c * ( CodewordLength – number of punctures)

Input Length:

c * (MessageLength * M)

Output Length:

c * (( CodewordLength – number of punctures) * M)

Input Length:

c * ( (CodewordLength – number of punctures) * M)

Output Length:

c * (MessageLength * M)

Erasures Length:

c * (CodewordLength – количество проколов)

Свойство

Input Length:

c * ShortMessageLength

Output Length:

c * (CodewordLength - MessageLength + ShortMessageLength - number of punctures)

Input Length:

c * (CodewordLength - MessageLength + ShortMessageLength - number of punctures)

Output Length:

c * ShortMessageLength

Erasures Length:

c * (CodewordLength - MessageLength + ShortMessageLength - number of punctures)

Input Length:

c * (ShortMessageLength * M)

Output Length:

c * ( (CodewordLength - MessageLength + ShortMessageLength - number of punctures) * M)

Input Length:

c * ((CodewordLength - MessageLength + ShortMessageLength - number of punctures) * M)

Output Length:

c * (ShortMessageLength * M)

Erasures Length:

c * (CodewordLength - MessageLength + ShortMessageLength - number of punctures)

Методы

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

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

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

| | | |