0 / 0 / 0
Регистрация: 19.10.2018
Сообщений: 60
|
|
1 | |
Сжатие целочисленных данных без потерь19.03.2020, 00:30. Показов 1409. Ответов 5
Нужно сжать массив/вектор int16_t. Нужен быстрый алгоритм сжатия, т.к. такой массив поступает примерно раз в секунду. Поэтому алгоритм Хафммана отпадает, по поводу LZ семейства не особо уверен, т.к. словарь, как и дерево в Хаффмане будет строиться долго (да и как его использовать для целых не особо понимаю) и ресурсозатратно, по поводу гладкости последовательности не знаю, поэтому дельта + RLE под вопросом. Поэтому не могли бы подсказать какие-то алгоритмы или реализации.
0
|
19.03.2020, 00:30 | |
Ответы с готовыми решениями:
5
сжатие без потерь на stm32f4 Переход между формами без потерь данных в текстбоксах 1 HDD на 3ТБ установки Windows 10 Как установить без разбития разделов без потерь ? Востановление файла 1Cv8.1CD, как переконвертировать без потерь данных? как зарузить .1CD на SQL? |
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
19.03.2020, 01:09 | 2 |
А какого характера данные? Если они окажутся случайными, то и сжимать их смысла нет.
Такой - это какой? За секунду современный компьютер может сделать очень многое. Сжатие чисел ничем не отличается от сжатия текста. Просто в первом случае у тебя алфавит заметно больше. Но ничто тебе не мешает сжимать не числа, а, скажем, поток байтов. Можно попробовать адаптивный алгоритм Хаффмана. Дерево строится "на лету", и его не нужно хранить.
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 |
Какие у тебя ограничения? Битрейт? Требования к задержке? Почему ты думаешь, что поступающие данные можно и нужно сжать? Нужно первым делом проанализировать данные, прежде чем приступать к выбору алгоритма.
Адаптивный алгоритм Хаффмана заметно выигрывает по производительности у обычного алгоритма. Но у меня есть сомнения по поводу эффективности сжатия именно аудиопотока.
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 |
Я бы не сказал, что это много, но не суть. А что с остальными вопросами? Максимальная задержка?
Если не учитывать ограничений на задержку, то нужен алгоритм с производительностью сжатия/разжатия выше, чем 0.33 мбит/сек. Судя по графикам бенчмарков в сети, подойдет большое число различных алгоритмов сжатия, в том числе и некоторые разновидности LZ. Если честно, я уже и не знаю, чем тебе можно помочь. Возьми какой-нибудь готовый бенчмарк с алгоритмами и погоняй на нем свои данные.
0
|
19.03.2020, 22:46 | |
19.03.2020, 22:46 | |
Помогаю со студенческими работами здесь
6
Разветвитель без потерь Из listview в recyclerview без потерь Без потерь перейти на ЧПУ Тихий звук без потерь Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |