2010-05-23 3 views
4

Эти данные хранятся в массиве (с использованием C++) и являются повторением 125 бит, каждый из которых отличается от другого. Он также имеет 8 сообщений из 12 символов ASCII в конце. Пожалуйста, предложите, следует ли использовать дифференциальное сжатие в массиве, и если да, то как?Какая наилучшая схема сжатия для небольших данных, таких как 1.66kBytes?

Или мне следует применить некоторую другую схему сжатия на весь массив?

+4

Зачем вам нужно сжимать его? –

+0

для экономии полосы пропускания и увеличения частоты обновления при передаче TDMA. –

+0

Можете ли вы предоставить более подробное описание данных, то есть полей и диапазона, в котором вы ожидаете их изменения? – fmark

ответ

3

Как правило, вы можете сжимать данные, которые имеют определенную предсказуемость или избыточность. Сжатие на основе словаря (например, алгоритмы ZIP-стиля) традиционно не работает на небольших фрагментах данных из-за необходимости совместного использования выбранного словаря.

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

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

+0

Ну Eric.J спасибо за ваш ответ Фактически мне нужно передавать сжатые данные каждые 4 секунды и фактически 125 бит data isnt much prbabilistic –

+0

@Mujtaba: Какие данные представлены в 125 бит? –

+1

его информация о воздушном судне, например, широта, долгота, скорость, высота, заголовок, идентификатор, тип и т. Д. –

0

Вы не предоставили нам достаточной информации, чтобы помочь вам. Тем не менее, я очень рекомендую книгу Text Compression от Bell, Cleary и Witten. Не обманывайте себя титулом; «Текст» здесь означает «без потерь» — все методы применяются к двоичным данным. Поскольку книга стоит дорого, вы можете попробовать ее получить в межбиблиотечном абонементе.

Также не упускайте из виду очевидные методы Burrows-Wheeler (bzip2) или Lempel-Ziv (gzip, zlib). Вполне возможно, что один из этих методов будет хорошо работать для вашего приложения, поэтому перед исследованием альтернатив попробуйте сжать ваши данные со стандартными инструментами.

+1

Благодаря RAMSEY эти методы bzip2 и LZ работают для данных массива? –

+0

@Mujtaba абсолютно да: любая последовательность байтов в памяти. –

+1

не применяли бы эти методы сжатия, чтобы поток бит был более длинным, потому что это некоторые из голов для создания сжатия? –

 Смежные вопросы

  • Нет связанных вопросов^_^