- •Основы теории цифровой связи Часть 1 кодирование информации
- •1. Введение
- •1.1. Модель радиотехнической системы связи
- •Контрольные вопросы
- •1.2. Статистическая трактовка процесса передачи информации
- •Контрольные вопросы
- •1.3. Основные понятия и элементы математического аппарата теории связи
- •1.3.1. Сигналы и помехи
- •1.3.2. Разложение сигнала по системе ортогональных функций. Спектр сигнала
- •1.3.3. Cвойства преобразования Фурье
- •1.3.4. Корреляционная функция сигнала
- •1.3.5. Связь между корреляционной функцией и спектром сигнала
- •1.3.6. Случайные сигналы и их характеристики
- •Контрольные вопросы
- •1.4. Источники информации
- •1.5. Теорема дискретизации
- •1.6. Дискретизация изображений
- •Контрольные вопросы
- •1.7. Квантование. Ошибки квантования
- •Контрольные вопросы
- •1.8. Количество информации, содержащейся в сообщении
- •1.8.1. Энтропия сложных сообщений, избыточность источника
- •Контрольные вопросы и задачи
- •2. Основы экономного кодирования информации
- •2.1. Способы представления кодов
- •Контрольные вопросы и задачи
- •2.2. Типы систем сжатия
- •X Квантователь Xq Кодер без потерь информации b (Xq) Декодер X*
- •Методы кодирования без потерь
- •2.3.1. Понятие префиксного множества
- •2.3.2. Алгоритм кодирования Хаффмена
- •2.3.3. Алгоритм Шеннона–Фано
- •2.3.4. Блочные коды
- •2.3.5. Арифметическое кодирование
- •2.3.6. Словарное кодирование. Метод Зива–Лемпеля
- •2.3.7. Кодирование длин повторений (rle)
- •2.3.8. Дифференциальное кодирование
- •Контрольные вопросы и задачи
- •2.4. Методы сжатия с потерей информации
- •2.4.1. Функции “скорость–искажение” и “искажение–скорость”
- •2.5. Сжатие речевых сигналов
- •2.5.1. Кодирование формы сигнала, икм
- •2.5.2. Дифференциальная икм
- •2.5.3. Адаптивная дифференциальная икм (адикм)
- •2.5.4. Дельта-модуляция
- •2.5.5. Другие методы кодирования формы сигнала
- •2.5.6. Кодирование источника
- •2.5.7. Гибридные методы кодирования речи
- •2.5.8. Полноскоростной кодер rpe-ltp (стандарт gsm 06.10)
- •2.5.9. Кодер vselp (стандарт d-amps)
- •Контрольные вопросы и задачи
- •2.6. Кодирование изображений. Стандарт сжатия jpeg
- •Процедуру дкп можно записать в матричной форме:
- •2.6.1. Рекурсивный (вэйвлет) алгоритм
- •2.7. Сжатие подвижных изображений (видео)
- •3. Основы помехоустойчивого кодирования
- •3.1. Основные принципы. Типы кодов
- •3.2. Линейные блочные коды
- •3.2.1. Код с проверкой на четность
- •3.2.2. Итеративный код
- •3.2.3. Порождающая матрица линейного блочного кода
- •3.2.4. Проверочная матрица
- •3.2.5. Дуальные коды
- •3.2.6. Синдром и обнаружение ошибок
- •3.2.7. Синдромное декодирование линейных блочных кодов
- •3.2.8. Мажоритарное декодирование линейных блочных кодов
- •3.2.9. Декодирование методом максимального правдоподобия
- •Поскольку
- •Если принятый сигнал дискретизован и Si – I-й отсчет принятого сигнала.
- •3.2.10. Вес и расстояние Хемминга. Способность кодов обнаруживать и исправлять ошибки
- •Контрольные вопросы и задачи
- •3.3. Полиномиальные коды
- •3.3.1. Циклические коды
- •3.3.2. Кодирование с использованием циклических кодов
- •3.3.3. Вычисление синдрома и исправление ошибок в циклических кодах
- •3.3.4. Неалгебраические методы декодирования циклических кодов
- •3.4. Сверточные коды
- •3.4.1. Кодирование с использованием сверточных кодов
- •3.4.2. Синдромное декодирование сверточных кодов
- •3.4.3. Кодовое дерево и решетчатая диаграмма
- •3.4.4. Декодирование сверточных кодов. Алгоритм Витерби
- •3.4.5. Алгоритмы поиска по решетке
- •Контрольные вопросы и задачи
- •3.5. Применение корректирующего кодирования в системах связи
- •3.5.1. Каскадные коды
- •3.5.2. Кодирование с перемежением
- •Библиографический список
- •Часть 1 1
2.3.3. Алгоритм Шеннона–Фано
Другим, очень похожим на алгоритм Хаффмена, способом статистического кодирования является кодирование по методу Шеннона–Фано. Кодирование в соответствии с этим алгоритмом производится следующим образом:
1. Сначала все буквы из алфавита сообщения записывают в порядке убывания их вероятностей.
2. Затем всю совокупность букв разбивают на две примерно равные по сумме вероятностей группы; одной из них (в группе может быть любое число символов, в том числе один) присваивают символ “1”, другой – “0”;
3. Каждую из этих групп снова разбивают (если это возможно) на две части и каждой из частей присваивают “1” и “0” и т.д.
Пример процедуры кодирования по методу Шеннона–Фано приведен в табл. 2.3.
Таблица 2.3
Буква |
Р(i ) |
I |
II |
III |
IV |
V |
Kод |
ni Pi |
А |
0.6 |
1 |
|
|
|
|
1 |
0.6 |
Б |
0.2 |
0 |
1 |
1 |
|
|
011 |
0.6 |
В |
0.1 |
0 |
|
|
010 |
0.3 |
||
Г |
0.04 |
0 |
1 |
|
|
001 |
0.12 |
|
Д |
0.025 |
0 |
1 |
|
0001 |
0.1 |
||
Е |
0.015 |
0 |
|
00001 |
0.075 |
|||
Ж |
0.01 |
1 |
000001 |
0.06 |
||||
З |
0.01 |
0 |
000000 |
0.06 |
Средняя длина кодов при использовании метода Шеннона–Фано получается немного большей, а степень сжатия – меньшей, чем при использовании алгоритма Хаффмена.
2.3.4. Блочные коды
Для увеличения эффективности кодирования и получения большей степени сжатия процедура кодирования Хаффмена может применяться не к отдельным символам, а к их блокам. В этом случае вектор данных разбивается на блоки заданной длины и затем каждый блок заменяют кодовым словом из префиксного множества двоичных слов. Полученную последовательность кодовых слов объединяют в выходную двоичную последовательность.
В качестве примера сожмем вектор данных X = (0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1), используя блочный код второго порядка (порядок кода – это размер блоков, на которые разбивается последовательность).
Сначала разобьем вектор X на блоки длины 2: 01, 10, 10, 01, 11, 10, 01, 01.
Будем рассматривать эти блоки как элементы нового “гипералфавита” {01, 10, 11}. Чтобы определить, какой код назначить какому символу этого нового алфавита, найдем вектор частот появлений блоков. Получим вектор частот (4, 3, 1), то есть наиболее часто встречающийся блок 01 появляется четыре раза, следующий по частоте встречаемости блок 10 три раза и наименее часто встречающийся блок 11 лишь один раз.
В качестве таблицы кодирования для алфавита из трех символов с таким вектором частот можно выбрать префиксное множество S1 (см. подразд. 2.3.1) (табл. 2.4).
Таблица 2.4
-
Таблица кодера
Блок
Кодовое слово
01
0
10
10
11
11
Заменяя каждый блок присвоенным ему кодовым словом из таблицы кодера, получим последовательность кодовых слов:
0, 10, 10, 0, 11, 10, 0, 0.
Объединяя эти кодовые слова вместе, имеем выходную последовательность кодера:
B(X) = (0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0).
Длина полученной последовательности составляет 12 бит, против 16 бит исходной последовательности, а скорость кода R = 12/16 = 0.75 бит на символ (в исходной последовательности – 1 бит/символ).
