коммуникация. ConvolutionalEncoder

Convolutionally кодируют двоичные данные

Описание

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

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

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

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

Примечание

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

Конструкция

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

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

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

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

PuncturePatternSource

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

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

PuncturePattern

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

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

Методы

сбросСбросьте состояния сверточного объекта энкодера
шагConvolutionally кодируют двоичные данные
Характерный для всех системных объектов
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