comm.ConvolutionalEncoder

Сверточное кодирование двоичных данных

Описание

ConvolutionalEncoder объект кодирует последовательность векторов двоичного входа, чтобы произвести последовательность векторов двоичного выхода.

convolutionally кодировать двоичное сообщение:

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

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

Примечание

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

Конструкция

H = comm.ConvolutionalEncoder создает Системный объект, H, то, что сверточные кодирования двоичных данных.

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

H = comm.ConvolutionalEncoder(TRELLIS,Name,Value) создает сверточный объект энкодера, H Этот объект имеет TrellisStructure набор свойств к TRELLIS, и другой заданный набор свойств к заданным значениям.

Свойства

TrellisStructure

Структура решетки сверточного кода

Задайте решетку как структуру MATLAB, которая содержит описание решетки сверточного кода. Используйте istrellis функционируйте, чтобы проверять, является ли структура допустимой структурой решетки. Значением по умолчанию является результат poly2trellis(7, [171 133]).

TerminationMethod

Метод завершения закодированной системы координат

Задайте, как закодированная система координат отключена как один из Continuous | Truncated | Terminated. Значением по умолчанию является Continuous. Когда вы устанавливаете это свойство на Continuous, объект сохраняет состояния энкодера в конце каждого входного вектора для использования со следующим входным вектором. Когда вы устанавливаете это свойство на Truncated, объект обрабатывает каждый входной вектор независимо. Состояния энкодера сбрасываются в начале каждого входного вектора. Если вы устанавливаете InitialStateInputPort свойство к false, объект сбрасывает свои состояния ко все-нулевому состоянию. Если вы устанавливаете InitialStateInputPort свойство к true, объект сбрасывает состояния к значениям, вы задаете в начальных состояниях step метод вводится. Когда вы устанавливаете это свойство на Terminated, объект обрабатывает каждый входной вектор независимо. Для каждого входного вектора объект использует дополнительные биты, чтобы установить состояния энкодера на все-нулевые состояния в конце вектора. Для уровня K/N код, метод step выводит вектор с длиной N×(L+S)K, где S = constraintLength –1 (или, в случае нескольких продолжительностей ограничения, S = сумма (constraintLength (i) –1)). L является длиной входа к step метод.

ResetInputPort

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

Установите это свойство на true включить дополнительный вход к step метод. Значением по умолчанию является false. Когда этот дополнительный вход сброса является ненулевым значением, внутренними состояниями сброса энкодера к их начальным условиям. Это свойство применяется, когда вы устанавливаете TerminationMethod свойство к Continuous.

DelayedResetAction

Задержите выходной сброс

Установите это свойство на true задержать сброс объектного выхода. Значением по умолчанию является false. Когда вы устанавливаете это свойство на true, сброс внутренних состояний энкодера происходит после того, как объект вычисляет закодированные данные. Когда вы устанавливаете это свойство на false, сброс внутренних состояний энкодера происходит, прежде чем объект вычисляет закодированные данные. Это свойство применяется, когда вы устанавливаете ResetInputPort свойство к true.

InitialStateInputPort

Включите вход начального состояния

Установите это свойство на true включить step вход метода, который позволяет спецификацию начального состояния энкодера для каждого входного вектора. Значением по умолчанию является false. Это свойство применяется, когда вы устанавливаете TerminationMethod свойство к Truncated.

FinalStateOutputPort

Включите конечному состоянию выход

Установите это свойство на true, чтобы получить конечное состояние энкодера через step метод выводится. Значением по умолчанию является false. Это свойство применяется, когда вы устанавливаете TerminationMethod свойство к Continuous или Truncated.

PuncturePatternSource

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

Задайте источник шаблона прокола как один из None | Property. Значением по умолчанию является None. Когда вы устанавливаете это свойство на None объект не применяет прокалывание. Когда вы устанавливаете это свойство на Property, объект прокалывает код. Это прокалывание основано на векторе шаблона прокола, который вы задаете в PuncturePattern свойство. Это свойство применяется, когда вы устанавливаете TerminationMethod свойство к Continuous или Truncated.

PuncturePattern

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

Укажите, что шаблон прокола раньше прокалывал закодированные данные как вектор-столбец. Значением по умолчанию является [1; 1; 0; 1; 0; 1]. Вектор содержит 1s и 0s, где 0 указывает на проколотый, или исключенный, биты. Это свойство применяется, когда вы устанавливаете TerminationMethod свойство к Continuous или Truncated и PuncturePatternSource свойство к Property.

Методы

сбросСбросьте состояния сверточного объекта энкодера
шагСверточное кодирование двоичных данных
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

развернуть все

Передайте модулируемый поток битов convolutionally закодированного 8-DPSK через канал AWGN. Затем демодулируйте и декодируйте использование Декодера Витерби.

Создайте необходимые Системные объекты.

hConEnc = comm.ConvolutionalEncoder;
hMod = comm.DPSKModulator('BitInput',true);
hChan = comm.AWGNChannel('NoiseMethod', ...
    'Signal to noise ratio (SNR)',...
    'SNR',10);
hDemod = comm.DPSKDemodulator('BitOutput',true);
hDec = comm.ViterbiDecoder('InputFormat','Hard');
hError = comm.ErrorRate('ComputationDelay',3,'ReceiveDelay', 34);

Обработайте данные с помощью следующих шагов:

  1. Сгенерируйте случайные биты

  2. Convolutionally кодируют данные

  3. Примените модуляцию DPSK

  4. Передайте модулируемый сигнал через AWGN

  5. Демодулируйте сигнал с шумом

  6. Декодируйте данные с помощью алгоритма Viterbi

  7. Соберите ошибочные статистические данные

for counter = 1:20
    data = randi([0 1],30,1);
    encodedData = step(hConEnc, data);
    modSignal = step(hMod, encodedData);
    receivedSignal = step(hChan, modSignal);
    demodSignal = step(hDemod, receivedSignal);
    receivedBits = step(hDec, demodSignal);
    errors = step(hError, data, receivedBits);
end

Отобразите количество ошибок.

errors(2)
ans = 3

Закодируйте и декодируйте последовательность битов с помощью сверточного энкодера и Декодера Витерби с заданным шаблоном прокола. Проверьте, что биты ввода и вывода идентичны

Задайте матрицу шаблона прокола и измените ее в векторную форму для использования с объектами Энкодера и Декодера.

pPatternMat = [1 0 1;1 1 0];
pPatternVec = reshape(pPatternMat,6,1);

Создайте сверточный энкодер и Декодер Витерби, в котором шаблон прокола задан pPatternVec.

ENC = comm.ConvolutionalEncoder(...
    'PuncturePatternSource','Property', ...
    'PuncturePattern',pPatternVec);

DEC = comm.ViterbiDecoder('InputFormat','Hard', ...
    'PuncturePatternSource','Property',...
    'PuncturePattern',pPatternVec);

Создайте коэффициент ошибок, отвечают соответствующим, получают задержку.

ERR = comm.ErrorRate('ReceiveDelay',DEC.TracebackDepth);

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

dataIn = randi([0 1],600,1);

dataEncoded = step(ENC,dataIn);

dataOut = step(DEC,dataEncoded);

Проверьте, что нет никаких ошибок в выходных данных.

errStats = step(ERR,dataIn,dataOut);
errStats(2)
ans = 0

Алгоритмы

Этот объект реализует алгоритм, входные параметры и выходные параметры, описанные на странице с описанием блока Convolutional Encoder. Свойства объектов соответствуют параметрам блоков, кроме:

Режим работы параметры блоков Reset on nonzero input via port соответствует ResetInputPort свойство.

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

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

|

Представленный в R2012a