arithenco

Закодируйте последовательность символов с помощью арифметического кодирования

Синтаксис

code = arithenco(seq,counts)

Описание

code = arithenco(seq,counts) генерирует код двоичной арифметики, соответствующий последовательности символов, заданных в векторном seq. Векторный counts представляет статистику источника путем листинга числа раз, каждый символ алфавита источника происходит в наборе тестовых данных.

Примеры

свернуть все

Этот пример иллюстрирует сжатие, которое арифметическое кодирование может выполнить в некоторых ситуациях. Источник имеет алфавит 2D символа и производит набор тестовых данных, в котором 99% символов составляют 1 с. Кодирование 1 000 символов из этого источника дает вектор кода, имеющий меньше чем 1 000 элементов. Фактическое число элементов в закодированной последовательности варьируется в зависимости от конкретной случайной последовательности.

Установите counts так, чтобы тот произошел 99% времени.

counts = [99 1];

Сгенерируйте случайную последовательность данных длины 1000.

len = 1000;
seq = randsrc(1,len,[1 2; .99 .01]);

Закодируйте последовательность и отобразите закодированную длину.

code = arithenco(seq,counts);
s = size(code)
s = 1×2

     1    57

Длина закодированной последовательности составляет только 5,7% длины исходной последовательности.

Алгоритмы

Эта функция использует алгоритм, описанный в [1].

Ссылки

[1] Sayood, Халид, введение в сжатие данных, Сан-Франциско, Моргана Кофманна, 2000.

Представлено до R2006a