EngeeComms.ConvolutionalEncoder
Сверточное кодирование двоичных данных.
Библиотека |
EngeeComms |
Блок |
Описание
Системный объект EngeeComms.ConvolutionalEncoder кодирует последовательность двоичных входных векторов для получения последовательности двоичных выходных векторов.
Чтобы выполнить сверточное кодирование двоичных данных, выполните следующие действия:
-
Создайте объект EngeeComms.ConvolutionalEncoder и установите его свойства.
-
Вызовите объект с аргументами, как если бы это была функция.
Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.
Создание
Синтаксис
-
object = EngeeComms.ConvolutionalEncoder
создает системный объект для сверточного кодирования со свойствами по умолчанию. Пример:ConvEncoder = EngeeComms.ConvolutionalEncoder()
-
object = EngeeComms.ConvolutionalEncoder(trellis)
создает системный объект для сверточного кодирования с описанием через решетчатую структуру TrellisStructure. Пример:# кодер с длиной ограничения 7 и полиномами генератора кода 171 и 133 (в восьмеричных числах) ConvEncoder = EngeeComms.ConvolutionalEncoder(TrellisStructure="poly2trellis(7, [171 133])"
-
object = EngeeComms.ConvolutionalEncoder(Name=Value)
создает системный объект для сверточного кодирования с каждым указанным свойством Name (имя), установленным на указанное Value (значение). Вы можете указать дополнительные аргументы в виде пары имя-значение в любом порядке (Name1
=Value1
,…,NameN
=ValueN
). Пример:# сохраняет состояния кодера в конце каждого входа для использования в следующем кадре ConvEncoder = EngeeComms.ConvolutionalEncoder(TerminationMethod="Continuous")
Свойства
TrellisStructure —
описание сверточного кода через решетчатую структуру
poly2trellis(7, [171 133]) (по умолчанию)
| решетчатая структура
Details
Треллисовое описание сверточного кода, заданное в виде структуры, содержащей треллис-описание для кода со скоростью , где — это количество входных битовых потоков, а — количество выходных битовых потоков.
Для создания структуры решетки можно использовать функцию poly2trellis
или создать ее вручную.
Решетчатая структура содержит следующие поля:
-
numInputSymbols
— количество символов, вводимых в кодер, заданное как целое число, равное , где — количество входных битовых потоков. -
numOutputSymbols
— количество символов, выводимых из кодера, заданное как целое число, равное , где — количество выходных битовых потоков. -
numStates
— количество состояний в кодере, заданное в виде степени2
. -
nextStates
— последующие состояния для всех комбинаций текущих состояний и текущих входов, заданные в виде матрицы целых чисел. Размер матрицы должен бытьnumStates
на . -
outputs
— выходные данные для всех комбинаций текущих состояний и текущих входных данных, заданные в виде матрицы восьмеричных чисел. Размер матрицы должен бытьnumStates
на .
TerminationMethod —
метод завершения кодированного кадра
Continuous (по умолчанию)
| Truncated
Details
Метод завершения кодированного кадра, заданный как одно из этих значений:
-
Continuous
— системный объект сохраняет состояния кодера в конце каждого входного вектора для использования в следующем входном векторе. -
Truncated
— системный объект сбрасывает в начале каждого входного вектора. Если задать свойству InitialStateInputPort значение0 (false)
, то объект сбрасывает свои состояния в состояние «все нули». Если задать свойству InitialStateInputPort значение1 (true)
, то объект сбрасывает свои состояния до значений, указанных во входном аргументе initstate.
DelayedResetAction —
опция задержки сброса выходных данных
0 (по умолчанию)
| 1
Details
Опция задержки сброса выходных данных, задаваемая в виде одного из этих логических значений:
-
1
(истина) — сброс внутренних состояний кодера происходит после того, как объект вычислит закодированные данные. -
0
(ложь) — сброс внутренних состояний кодера происходит до того, как объект вычислит закодированные данные.
Зависимости
Чтобы использовать это свойство, установите для свойства ResetInputPort значение 1
.
InitialStateInputPort —
опция включения входа начального состояния
0 (по умолчанию)
| 1
Details
Опция включения входа начального состояния, задаваемая в виде логической 1
(истина) или 0
(ложь). При установке для этого свойства значения 1
объект позволяет задавать начальное состояние кодера для каждого входного вектора.
Зависимости
Чтобы использовать это свойство, установите для свойства TerminationMethod значение Truncated
.
FinalStateOutputPort —
опция включения вывода конечного состояния
0 (по умолчанию)
| 1
Details
Опция включения вывода конечного состояния, задаваемая в виде логической 1
(истина) или 0
(ложь). Установите для этого свойства значения 1
, чтобы получить на выходе конечное состояние кодера.
Зависимости
Чтобы использовать это свойство, установите для свойства TerminationMethod значение Continuous
или Truncated
.
PuncturePatternSource —
источник шаблона перфорирования
None (по умолчанию)
| Property
Details
Источник шаблона перфорирования, указывается как одно из этих значений:
-
None
— объект не выполняет перфорирование. -
Property
— объект выполняет перфорирование кода. Перфорирование основывается на векторе шаблона перфорирования, который задается в свойстве PuncturePattern.
Зависимости
Чтобы использовать это свойство, установите для свойства TerminationMethod значение Continuous
или Truncated
.
PuncturePattern —
вектор шаблона перфорирования
[1; 1; 0; 1; 0; 1] (по умолчанию)
| вектор-столбец
Details
Шаблон перфорирования, заданный в виде вектора. Вектор перфорирования представляет собой шаблон из 1
и 0
, где 0
обозначают перфорированные биты или биты, исключенные из выходных кодированных данных.
Зависимости
Чтобы использовать это свойство, установите для свойства TerminationMethod значение Continuous
или Truncated
, а для свойства PuncturePatternSource значение Property
.
Использование
Синтаксис
ConvEncoder= EngeeComms.ConvolutionalEncoder()
ConvEncoder= EngeeComms.ConvolutionalEncoder(TrellisStructure="poly2trellis(3,[4 5])")
ConvEncoder= EngeeComms.ConvolutionalEncoder(TrellisStructure="poly2trellis(3,[4 5])" TerminationMethod="Truncated", FinalStateOutputPort=true)
in_data = [1; 0; 1; 0; 0; 1]
out = ConvEncoder(in_data)
Описание
-
ConvEncoder= EngeeComms.ConvolutionalEncoder()
– создание системного объекта по умолчанию. -
ConvEncoder= EngeeComms.ConvolutionalEncode(Name=Value)
– создание объекта с заданными параметрами.
Выходные аргументы
out —
выходное значение
[codeword, finalstate]
|[codeword]
Details
Если для свойства FinalStateOutputPort установлено значение 1
(истина), то выходной аргумент out представляет собой вектор [codeword, finalstate]
, где codeword
— сверточное кодовое слово, а finalstate
— конечное состояние кодера. Если для свойства FinalStateOutputPort установлено значение 0
(ложь), то out содержит только сверточное кодовое слово [codeword]
.
Cверточное кодовое сообщение, возвращаемое в виде вектора-столбца с двоичными значениями. Этот выходной вектор имеет тот же тип данных и ориентацию, что и входное сообщение.
Когда сверточный кодер представляет код со скоростью , длина входного вектора равна для некоторого положительного целого числа . Объект устанавливает длину выходного вектора, равную .
Типы данных: Float64
, Int8
finalstate —
конечное состояние кодера
целое число
Details
Конечное состояние кодера, возвращаемое в виде целого числа.
Зависимости
Чтобы использовать этот аргумент, установите для свойства TerminationMethod значение Continuous
или Truncated
.
Типы данных: Float64
Дополнительно
Подробнее о сверточном кодировании
Details
Сверточное кодирование — это кодирование с контролем ошибок, которое обладает памятью. В частности вычисления и кодированный выход зависят от текущего набора входных символов и от количества предыдущих входных символов, которое меняется в зависимости от конфигурации решетки.
Сверточный кодер выдает битов на каждые входных битов. В процессе моделирования входные данные могут быть кратны битам.
Используя структуру решетки, которая определяет набор генераторных полиномов, вы можете моделировать несистематические, систематические сверточные коды с прямой или систематической обратной связью.
Для декодирования выходного сигнала сверточного кода можно использовать:
-
Системный объект EngeeComms.APPDecoder — использует апостериорный вероятностный декодер для мягкого декодирования выходных данных сверточных кодов.
Литература
-
Clark, George C., and J. Bibb Cain. Error-Correction Coding for Digital Communications. Applications of Communications Theory. New York: Plenum Press, 1981.
-
Gitlin, Richard D., Jeremiah F. Hayes, and Stephen B. Weinstein. Data Communications Principles. Applications of Communications Theory. New York: Plenum Press, 1992.
-
Yasuda, Y., K. Kashiki, and Y. Hirata. “High-Rate Punctured Convolutional Codes for Soft Decision Viterbi Decoding.” IEEE Transactions on Communications 32, no. 3 (March 1984): 315–19. https://doi.org/10.1109/TCOM.1984.1096047.
-
Haccoun, D., and G. Begin. “High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding.” IEEE Transactions on Communications 37, no. 11 (November 1989): 1113–25. https://doi.org/10.1109/26.46505.
-
Begin, G., D. Haccoun, and C. Paquin. “Further Results on High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding.” IEEE Transactions on Communications 38, no. 11 (November 1990): 1922–28. https://doi.org/10.1109/26.61470.