Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методическое пособие 640

.pdf
Скачиваний:
7
Добавлен:
30.04.2022
Размер:
3.05 Mб
Скачать

ми полиномами gi(z),i 1,2, ,n. Степени 0,1, ,m 1 фор-

мальной переменной z в порождающих полиномах соответствуют порядковому номеру ячейки памяти регистра сдвига, а

коэффициенты gij в полиноме gi(z) при z j принимают (для

двоичных кодов) значения, равные единице только в том случае, если есть соединение между j–м сумматором по модулю два и i–й ячейкой регистра сдвига.

Описание сверточного кода может быть осуществлено и в полиномиальной форме. В этом случае входному информационному потоку сопоставляется многочлен

a(z) a0 a1z a2z2 ,

коэффициенты ai которого определяются значениями двоич-

ных символов информационного слова. Тогда кодовое слово сверточного кода представимо в виде многочленов кодового слова

ui(z) a(z)gi(z),i 1,n,

причем коэффициенты многочленов перемежаются в порядке их прохождения по каналу.

7.20. Сплайн-интерполяция

Наряду с предсказанием для сокращения избыточности непрерывных сообщений широко используются методы декорреляции, основанные на аппроксимации первичных сигналов b(t) с помощью различных базисных функций. Чаще всего в качестве таких функций используются степенные полиномы нулевого и первого порядков. Апостериорный анализ на основе интерполяции позволяет исключить значительную часть избыточных отсчетов путем сравнения исходного сигнала b(t) с аппроксимирующей и передать только те отсчеты (назовем их информационными), для которых выполняется условие

ε(t ) = [b(t )− b(t)] ≤ ∆ ,

241

где ∆ – допустимая ошибка аппроксимации. Совокупность информационных отсчетов вместе с информацией о временных интервалах между ними позволяет восстановить на приеме исходное сообщение с ошибкой ɛ(t) < ∆.

В последнее время проявляется большой интерес к интерполяционным методам сжатия данных с применением ку- сочно-полиномиальной интерполяции на основе сплайнфункций. Среди всех кусочно-полиномиальных функций сплайны обладают наибольшей гладкостью за счет непрерывности нескольких производных. Широко используется следующее определение сплайна. Пусть задана сетка вещественной переменной t:

∆: A = t0 <t1 <t2 <...<tn=B

Сплайном SD(∆, t), заданным на сетке (порядка t, дефекта D) называется функция

S

(∆,t) =

P (t) =

a( )(t−t ) ,

(7.32)

d P

(t )

d P (t )

 

 

dt

=

dt

,k = 1,n −1 ,i = 0,m− D .

(7.33)

Выражение (7.32) определяет сплайн SD(∆,t) как объединение n полиномов степени m на интервале АВ, а выражение (7.33) выражает условие непрерывности m — D производных сплайна на интервале АВ.

Рассмотрим случай кубического сплайна (m = 3) дефекта D = 1 для задержки s = l. Из условия (7.33) при i = 0 следует равенство Pk-1(tk) = Pk(tk), согласно (7.32)

( ) =

( )( − ) =

( )( − ) .

Отсюда получаем первое уравнение рекуррентного алгоритма:

242

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( )(

 

− )

=

( ) .

 

( ) для к+1 интер-

вала: Запишем это уравнение относительно

 

 

 

 

 

 

( ) =

 

 

 

 

1

 

 

 

 

(

 

 

) ( ) ( )(

 

− ) .

 

 

 

 

При i =(

 

 

(5.81) следует

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 из

 

)

 

)

( −

 

)

 

 

(

 

)

( −

 

)

| =

(

 

 

)

+

 

(

 

)

+

(

 

 

 

+

 

 

 

 

 

 

или

 

 

=

 

 

 

 

 

 

 

(

)

 

 

 

 

 

 

 

( )

 

+

 

( )

(

− ) +

(

)

( −

)

 

+

( −

 

) | = .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После дифференцирования и подстановки получаем вто-

рое уравнение рекуррентного алгоритма:

 

 

 

 

 

( )

 

 

(

)

+2

 

(

 

)

(

 

 

)

+3

(

)

( −

 

 

) =

.

(7.34)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Аналогично из (7.33) при i = 2 имеем третье уравнение:

 

 

 

 

 

 

 

 

(

 

 

)(

 

 

 

)+3 (

 

)(

 

 

 

) =

(

) .

 

(7.35)

Кроме того, из условия равенства интерполируемой и интерполирующей функций в узлах интерполяции tk следует четвертое уравнение b(tk)=Pk(tk), т. е.

( ) = ( ) .

(7.36)

Объединив полученные уравнения, имеем следующую систему, отражающую рекуррентный алгоритм построения кубического сплайна:

243

 

( )

 

( )

 

( )

= ( )

 

 

(

)

 

 

=

+2

(

)

 

+3

 

 

 

 

 

 

 

 

 

(7.37)

 

 

 

( ) =

(

 

) +3 (

)

 

( )

( )

=

1 (

 

)

( )

( )

 

k

 

 

 

 

 

 

 

 

 

где h

= tk+1 — tk — длина k-го интервала.

 

 

 

Для обеспечения устойчивости алгоритма (7.37) необходимо наложить одно из дополнительных условий. Эти условия могут быть сформулированы, например как требования минимизации выражений вида:

( ) , ( ) .

Потребуем выполнения второго локального условия, т. е.

=

 

 

 

 

( )

=

 

 

, = 0,

 

−1 .

 

 

 

 

 

 

Выполняя интегрирование, имеем

)

 

Тогда= 4

( )

 

+3

( ) ( )

 

(

.

 

 

 

 

 

 

 

 

+3k

 

условие минимума интервала I

 

 

 

( )

= 4 2 ( ) +3 ( ) = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( )

 

= 8

 

> 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Получаем

( )

= −

2 ( )

.

 

 

(7.38)

 

 

 

 

 

 

 

 

 

3

 

 

 

Теперь для трех коэффициентов ( ), ( ), ( ) имеем че-

тыре уравнения (7.34), (7.35), (7.36) и (7.38). Так как всем им

244

удовлетворить невозможно, то откажемся от одного из них,

например (7.31). Тогда ( ) определится из (7.30), а

( )из сов-

местного решения (7.29) и (7.33). Учитывая, что (

) = b(tk), и

( )=b(tk+1), окончательно получаем следующие

формулы

для определения коэффициентов кубического сплайна на k-м интервале независимой переменной t :

 

( )

 

( )

( )

= (

)

 

 

(

)

 

 

=

+2

(

)

 

 

 

+3

 

 

 

 

 

 

 

 

 

 

 

 

(7.39)

 

 

( ) =

 

[ (

 

) −

(

)

) −

 

]

 

 

 

 

( )

 

 

 

 

(

 

 

 

 

 

 

 

 

 

 

= −

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Алгоритм сплайн-интерполяции на основе (7.39) устойчив и может служить основой для построения приемного устройства. Алгоритм преобразования первичного сигнала b(t) с помощью сплайн-интерполяции представляет собой процесс выбора информационных отсчетов из равномерной последовательности отсчетов {b(tk)}, где k = 1, ... , n. В результате такого преобразования получается последовательность неравноотстоящих отсчетов этого сигнала, предназначенная для передачи по каналу. На приемной стороне переданный сигнал восстанавливается с заданной точностью ∆ по значениям информационных отсчетов и их расстановке во времени. Действительно, восстановленный сигнал представляет собой сплайнфункцию, которая на каждом интервале между опорными отсчетами определяется формулой

( ) = ( ) + ( )( − ) + ( )( − ) + ( )( − )

(7.40)

Значения коэффициентов в (7.40) вычисляются через отсчеты функции b(tk) и интервалы между ними по формулам (7.39); величина коэффициента задается произвольно. В результате получается совокупность равноотстоящих отсчетов сплайн-функции S(tk), т. е. для последовательности неравноот-

245

стоящих отсчетов вычисляются значения сплайнов в моменты времени, соответствующие пропущенным отсчетам сигнала.

Рассмотренные алгоритмы сплайн-интерполяции непрерывных сигналов можно реализовать с помощью ЭВМ или с помощью специализированных устройств, работающих в реальном масштабе времени. Одна из возможных схем такого устройства приведена на рис. 7.17. Из блока хранения отсчетов 1 отсчеты исходного сигнала b(tk) поступают в блок вычисления 2, где по значениям этих отсчетов и формулам (7.32), (7.33) вычисляются коэффициенты аk и значение сплайна Sk(t). При увеличении интервала аппроксимации часть коэффициентов, не подлежащая пересчету, из блока вычисления 2 поступает в блок хранения коэффициентов 3. Считывание коэффициентов из блока 3 происходит при увеличении интервала аппроксимации и поступлении в блок 3 из блока сравнения 4 импульса разрешения считывания. Этот импульс на выходе блока 4 появляется в случае, если разность между отсчетами исходного сигнала, поступающими из блока 1, и значениями сплайна, вычисленными в блоке 2, не превосходит допустимой погрешности ∆. В противном случае, когда эта разность превосходит ∆ хотя бы в одной точке, предпоследний отсчет интервала аппроксимации считается исходным для определения нового интервала аппроксимации. Результаты моделирования методов сплайн-интерполяции на ЭВМ и простота их технической реализации позволяют сделать вывод о перспективности их использования для сокращения избыточности в речевых и видеосигналах.

Рис. 7.17. Структурная схема сплайн-аппроксимации

246

8. Применение корректирующего кодирования в системах связи

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

Еще одной интересной проблемой является кодирование для каналов, в которых ошибки возникают не независимо, а пакетами. Рассмотренные ранее методы кодирования при этом становятся совершенно неэффективными, поскольку все их характеристики определялись исходя из того, что ошибки в отдельных символах независимы друг от друга.

8.1. Каскадные коды

Каскадные коды были впервые предложены Форни в качестве метода практической реализации кода с большой длиной блока и высокой корректирующей способностью [6]. Эта цель достигается введением нескольких уровней кодирования, обычно – двух.

Основную идею каскадного кодирования с двумя уровнями иллюстрирует рис. 8.1.

Вход

 

 

 

 

 

 

 

 

Выход

 

 

 

 

 

 

 

 

 

 

Внешний

 

Внутрен-

 

Канал

 

 

Внутренний

 

Внешний

кодер

 

ний кодер

 

 

 

 

декодер

 

декодер

 

 

 

 

 

 

 

 

 

 

(n,k)

 

 

 

 

 

 

 

 

 

 

(N,k)

 

 

 

 

 

 

 

 

 

 

 

Суперканал

 

 

 

Рис. 8.1. Схема каскадного кодирования

В этой схеме комбинацию внутреннего кодера, канала и внутреннего декодера иногда называют суперканалом, анало-

247

гично, комбинацию внешнего и внутреннего кодеров – суперкодером, а комбинацию внутреннего и внешнего декодеров – супердекодером.

Длина каскадного кода получается равной N1 = n двоичных символов, где N - длина внешнего кода, а n – длина внутреннего кода. При этом информационная длина кода составляет K1 = K · k двоичных символов, а скорость кода R1 = R · r. Несмотря на то, что общая длина кода получается большой и, соответственно, значительно возрастает его исправляющая способность, его декодирование может выполняться с помощью двух декодеров, рассчитанных на длины составляющих его кодов n и N. Это позволяет многократно снизить сложность декодера в сравнении с тем, если бы такая исправляющая способность достигалась одноуровневым кодированием.

Кодирование осуществляется следующим образом. Множество k1 k2 информационных символов (в дальнейшем предполагают, что они двоичные) разбивается на k2 подблоков по k1 символов. Каждый подблок из k1 символов рассматривается как символ из алфавита объемом 2k1. Затем k2 подблоков кодируются кодовыми комбинациями внешнего кода (рис. 8.1), составленными из п2 подблоков по k1 двоичных символов. Наконец, каждый из п2 подблоков кодируется кодовыми комбинациями внутреннего (n1, k1) -кода. Полученное множество п2 кодовых слов внутреннего (n1, k1) -кода является кодовым словом каскадного (n1n2 , k1k2)-кода. Обычно в качестве внешнего используют код Рида-Соломона с основанием 2k1, обеспечивающий максимальное кодовое расстояние при заданных п2 и k1, п2 < 2k1, а в качествевнутреннего – двоичный (n1, k1) – код.

Декодирование осуществляется следующим образом. Сначала декодируется внутренний код. При этом получается п2 подблоков, содержащих по k символов, которые декодируются внешним кодом. В результате на выходе внешнего декодера появляются k2 подблоков по k1 символов.

Декодирование двумя отдельными декодерами позволяет существенно снизить сложность по сравнению с той, которая

248

потребуется для получения той же вероятности ошибки при одном уровне кодирования.

Простейшей иллюстрацией к каскадному кодированию является итеративный код. Этот код состоит из простых кодов с проверкой на четность (по строкам и столбцам), но в то же время обладает исправляющей способностью. На практике, конечно, используются гораздо более сложные коды.

Идея построения итеративных кодов заключается в следующем. Информационные символы записываются в виде таблицы из k1 столбцов и k2 строк. К каждой строке таблицы дописываются n1 – k1 проверочных символов в соответствии с некоторым кодом (n1, k1). Затем к каждому из n столбцов полученной таблицы добавляют п2 – k2 проверочных символов в соответствии с некоторым кодом (п2 , k2). Таким образом строится код длиной п = n1n2 с числом информационных символов k = k1 k2.

Можно показать, что для полученного двумерного итеративного кода кодовое расстояние d равно d1 d2, где d1 и d2 – кодовые расстояния для кодов (n1, k1) и (п2, k2) соответственно.

Кодовая комбинация двумерного итеративного кода обычно передается последовательно по строкам, начиная с первой. Соответственно, декодирование ведется сначала по строкам, а затем, после приема всего двумерного блока, – по столбцам.

Проиллюстрируем построение кодовой комбинации двумерного итеративного кода. Пусть информационные символы

записаны в виде таблицы

 

 

 

1

1

1

0

1

0

1

0

0

1

0

0

1

1

0

1

Вкачестве кодов (n1, k1) и (п2, k2) будем использовать коды

спроверкой на четность. Тогда кодовая комбинация будет иметь вид

249

Легко показать, что кодовое расстояние этого кода равно 4. Код исправляет все однократные ошибки. Их координаты определяются по номерам строк и столбцов, в которых не выполняется проверка на четность. Одновременно код обнаруживает все двукратные ошибки.

Итеративные коды характеризуются большой длиной, большим кодовым расстоянием и сравнительно простой процедурой декодирования. Недостатком их является малая скорость k / n при заданной исправляющей способности.

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

Обычно внешнее кодирование выполняется блочными кодами, а внутреннее – более приспособленными для побитовой передачи по радиоканалу сверточными кодами. Каскадное кодирование широко применяется на практике, в частности, при помехоустойчивом кодировании речевой информации в системе сотовой связи формата GSM.

8.2. Коды, исправляющие пакеты ошибок

Известен ряд кодов, которые наравне с исправлением t ошибок произвольной конфигурации способны корректировать ошибки значительно большей кратности при условии, что они сгруппированы в пакеты. Необходимое условие существования линейного кода, способного исправлять пакеты ошибок длиной

250