MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем
Обработка сигналов и изображений\Communications Toolbox

Список функций CommunicationsToolbox: Помехоустойчивое кодирование и декодирование

  В оглавление \ К следующему разделу \ К предыдущему разделу

CONVENC
Кодирование двоичных данных
с использованием сверточного кода

Синтаксис:

code = convenc(msg,trellis);
code = convenc(msg,trellis,initstate);
[code,finalstate] = convenc(...);

Описание:

  • code = convenc(msg,trellis)

Кодирует двоичный вектор msg с использованием сверточного кода, описание таблицы переходов которого содержится в MATLAB-структуре trellis. Подробная информация о назначении полей этой структуры приведена на странице с описанием функции istrellis. Каждый символ в сообщении msg содержит log2(trellis.numInputSymbols) бит. Вектор msg может содержать один или несколько символов. Выходной двоичный вектор code содержит столько же символов, сколько и входное сообщение, при этом каждый выходной символ состоит из log2(trellis.numOutputSymbols) бит.

  • code = convenc(msg,trellis,initstate)

То же, что и предыдущий вариант синтаксиса, но входной параметр initstate задает начальное внутреннее состояние кодера. Скалярный параметр initstate является целым числом в диапазоне от 0 до trellis.numStates-1. Если схема кодера предполагает наличие нескольких входных битовых потоков, то состояние сдвигового регистра, принимающего первый входной битовый поток, соответствует младшим битам параметра initstate, а состояние сдвигового регистра, принимающего последний поток, — старшим битам этого параметра. Чтобы использовать нулевое начальное состояние, принимаемое по умолчанию, задайте параметр initstate равным 0 или [].

  • [code,finalstate] = convenc(...)

Кодирует входное сообщение и, помимо этого, возвращает в скалярном выходном параметре finalstate заключительное внутреннее состояние кодера. Формат параметра finalstate такой же, как у входного параметра initstate.

Примеры.

Пример 1.

Приведенная ниже команда кодирует пять случайных двухбитовых символов с использованием сверточного кода, имеющего скорость кодирования 2/3. Структурная схема этого кодера приведена на странице с описанием функции poly2trellis.

code1 = convenc(randint(10,1,2,123), poly2trellis([5 4],[27 33 0; 0 5 13]));

Пример 2.

Приведенные ниже команды создают структуру таблицы переходов в явном виде, а затем с помощью функции convenc производят кодирование десяти однобитовых символов. Решетчатая диаграмма для используемого в данном примере кода (его скорость равна 1/2) показана на рисунке.

trel = struct('numInputSymbols',2,'numOutputSymbols',4,...
'numStates',4,'nextStates',[0 2;0 2;1 3;1 3],...
'outputs',[0 3;1 2;3 0;2 1]);
code2 = convenc(randint(10,1),trel);

Пример 3.

Приведенные ниже команды демонстрируют использование дополнительных параметров initstate и finalstate для того, чтобы кодировать сообщение по частям, вызывая функцию convenc несколько раз. Объединенный выходной вектор [code3; code4] совпадает с результатами кодирования, полученными в Примере 1 (вектор code1).

trel = poly2trellis([5 4],[27 33 0; 0 5 13]);
msg = randint(10,1,2,123);
% Encode part of msg, recording final state for later use.
[code3,fstate] = convenc(msg(1:6),trel);
% Encode the rest of msg, using state as an input argument.
code4 = convenc(msg(7:10),trel,fstate);

Сопутствующие функции: vitdec, poly2trellis, istrellis.

Литература

Gitlin, Richard D., Jeremiah F. Hayes, and Stephen B. Weinstein. Data Communications Principles. New York: Plenum, 1992.

  В оглавление \ К следующему разделу \ К предыдущему разделу


Поиск по сайту:

Система Orphus

Яндекс.Метрика