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

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

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

HUFFMANDICT
Генерирование словаря для кода Хаффмана при известном распределении вероятности источника

Синтаксис:

[dict,avglen] = huffmandict(symbols,p)
[dict,avglen] = huffmandict(symbols,p,N)
[dict,avglen] = huffmandict(symbols,p,N,variance)

Описание:

Для всех вариантов синтаксиса

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

  • symbols - алфавит источника данных. Данный параметр может быть задан в виде числового вектора, числового массива ячеек или массива ячеек, содержащего символьные данные. Если используется массив ячеек, он должен быть строкой или столбцом.
  • p - вектор значений вероятности, k-й элемент которого представляет собой вероятность появления k-го элемента параметра symbols на выходе источника данных. Длина вектора p должна совпадать с длиной параметра symbols. Выходные параметры, производимые функцией huffmandict, имеют следующий смысл:
  • dict - двухстолбцовый массив ячеек, в первом столбце которого перечислены элементы алфавита источника из входного параметра symbols, а во втором столбце - соответствующие кодовые слова кода Хаффмана. Кодовые слова во втором столбце представлены в виде числовых векторов-строк.
  • avglen - средняя длина кодового слова, вычисленная в соответствии с вероятностями из входного вектора p.

Для конкретных вариантов синтаксиса

[dict,avglen] = huffmandict(symbols,p)
Генерирует словарь для двоичного кода Хаффмана с использованием алгоритма максимальной дисперсии.

[dict,avglen] = huffmandict(symbols,p,N)
Генерирует словарь для N-ичного кода Хаффмана с использованием алгоритма максимальной дисперсии. Входной параметр N должен быть целым числом в диапазоне от 2 до 10, не превосходящим объем алфавита источника данных.

[dict,avglen] = huffmandict(symbols,p,N,variance)
Генерирует словарь для N-ичного кода Хаффмана с использованием алгоритма минимальной дисперсии, если входной строковый параметр variance имеет значение 'min', или с использованием алгоритма максимальной дисперсии, если variance имеет значение 'max'. Входной параметр N должен быть целым числом в диапазоне от 2 до 10, не превосходящим объем алфавита источника данных.

Примеры:

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

symbols = [1:5];
p = [.3 .3 .2 .1 .1];
[dict,avglen] = huffmandict(symbols,p)
samplecode = dict{5,2} % Кодовое слово для пятого символа алфавита источника

Далее приводится результат работы кода, где в первом столбце массива ячеек dict перечислены символы алфавита symbols, а во втором содержатся соответствующие им кодовые слова.

dict = 
    [1]    [1x2 double]
    [2]    [1x2 double]
    [3]    [1x2 double]
    [4]    [1x3 double]
    [5]    [1x3 double]

avglen =
    2.2000

samplecode =
     1     1     0

Сопутствующие функции: huffmanenco, huffmandeco.

Литература:

[1] Sayood, Khalid, Introduction to Data Compression, San Francisco, Morgan Kaufmann, 2000.

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


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

Система Orphus

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