0 / 0 / 0
Регистрация: 19.10.2018
Сообщений: 60
1

Сжатие целочисленных данных без потерь

19.03.2020, 00:30. Показов 1409. Ответов 5

Author24 — интернет-сервис помощи студентам
Нужно сжать массив/вектор int16_t. Нужен быстрый алгоритм сжатия, т.к. такой массив поступает примерно раз в секунду. Поэтому алгоритм Хафммана отпадает, по поводу LZ семейства не особо уверен, т.к. словарь, как и дерево в Хаффмане будет строиться долго (да и как его использовать для целых не особо понимаю) и ресурсозатратно, по поводу гладкости последовательности не знаю, поэтому дельта + RLE под вопросом. Поэтому не могли бы подсказать какие-то алгоритмы или реализации.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.03.2020, 00:30
Ответы с готовыми решениями:

сжатие без потерь на stm32f4
Доброе время суток !!! Возникла задача принимать данные МК STM32F4 с 16-разрядного АЦП с...

Переход между формами без потерь данных в текстбоксах
есть три формы нужно, чтобы при переходе между ними данные в текстбоксе оставались. У меня...

1 HDD на 3ТБ установки Windows 10 Как установить без разбития разделов без потерь ?
Здравствуйте, есть в наличии всего 1 HDD Размером на 3 ТБ уже как то умудрялся устанавливать на...

Востановление файла 1Cv8.1CD, как переконвертировать без потерь данных? как зарузить .1CD на SQL?
Добрый день уважаемые форумчане. прошу помощи у гуру. !!! Проблема с востановлением базы -...

5
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
19.03.2020, 01:09 2
Цитата Сообщение от AlexChek Посмотреть сообщение
Нужно сжать массив/вектор int16_t
А какого характера данные? Если они окажутся случайными, то и сжимать их смысла нет.

Цитата Сообщение от AlexChek Посмотреть сообщение
такой массив поступает примерно раз в секунду
Такой - это какой? За секунду современный компьютер может сделать очень многое.

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

Цитата Сообщение от AlexChek Посмотреть сообщение
алгоритм Хафммана отпадает
Можно попробовать адаптивный алгоритм Хаффмана. Дерево строится "на лету", и его не нужно хранить.
0
0 / 0 / 0
Регистрация: 19.10.2018
Сообщений: 60
19.03.2020, 01:19  [ТС] 3
В массиве хранится частоты сигнала (аудио) воспроизводимого за секунду. По поводу кода Хаффмана, мне ведь все равно придется находить вероятность для каждого числа из диапазона -32 768 до 32 767, разве нет? Если да, то это ведь очень ресурсозатратно и долго.
Т.е. мне каждую секунду приходят частоты, которые хранятся в массиве, который нужно сжать, а потом уже "распаковать".
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
19.03.2020, 09:03 4
Цитата Сообщение от AlexChek Посмотреть сообщение
В массиве хранится частоты сигнала (аудио) воспроизводимого за секунду
Какие у тебя ограничения? Битрейт? Требования к задержке? Почему ты думаешь, что поступающие данные можно и нужно сжать? Нужно первым делом проанализировать данные, прежде чем приступать к выбору алгоритма.

Цитата Сообщение от AlexChek Посмотреть сообщение
По поводу кода Хаффмана, мне ведь все равно придется находить вероятность для каждого числа из диапазона -32 768 до 32 767, разве нет?
Адаптивный алгоритм Хаффмана заметно выигрывает по производительности у обычного алгоритма. Но у меня есть сомнения по поводу эффективности сжатия именно аудиопотока.
0
0 / 0 / 0
Регистрация: 19.10.2018
Сообщений: 60
19.03.2020, 17:01  [ТС] 5
Битрейт примерно 0.33 мбит/сек. Поэтому нужно сжимать
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
19.03.2020, 22:46 6
Цитата Сообщение от AlexChek Посмотреть сообщение
Битрейт примерно 0.33 мбит/сек. Поэтому нужно сжимать
Я бы не сказал, что это много, но не суть. А что с остальными вопросами? Максимальная задержка?

Если не учитывать ограничений на задержку, то нужен алгоритм с производительностью сжатия/разжатия выше, чем 0.33 мбит/сек. Судя по графикам бенчмарков в сети, подойдет большое число различных алгоритмов сжатия, в том числе и некоторые разновидности LZ.

Если честно, я уже и не знаю, чем тебе можно помочь. Возьми какой-нибудь готовый бенчмарк с алгоритмами и погоняй на нем свои данные.
0
19.03.2020, 22:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2020, 22:46
Помогаю со студенческими работами здесь

Разветвитель без потерь
При подключении двух колонок к материнке через обычный раздвоитель теряется мощность.каким образом...

Из listview в recyclerview без потерь
Здравствуйте, как переделать листвью в recyclerview если у меня уже все собранно к листвью(адаптер...

Без потерь перейти на ЧПУ
Не первый день ломаю голову над тем, как перейти на ЧПУ (mod_rewrite). Скрипт уже готов, но после...

Тихий звук без потерь
Подскажите, пожалуйста: 1. По каким критериям выбирать колонки, чтобы они, помимо прочего, могли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru