Алгоритм компрессии AVR
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Алгоритм компрессии AVR
Привет всем. Задачу решить нужно )
дано много матриц целых чисел 0..65535, размерностью 20х12. Задача состоит в том, чтобы впихнуть в контроллер как можно больше этих матриц - ибо одна получается 480 байт, что для аврки многовато. Вопрос в том, можно ли как то компрессировать эти данные? Может кто сталкивался?
дано много матриц целых чисел 0..65535, размерностью 20х12. Задача состоит в том, чтобы впихнуть в контроллер как можно больше этих матриц - ибо одна получается 480 байт, что для аврки многовато. Вопрос в том, можно ли как то компрессировать эти данные? Может кто сталкивался?
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18612
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
ну, предположим, для меги128 эти таблички просто тьфу - их можно напихать кучу во FLASH. так что вопрос некорректный по сути - без указания конкретной меги.
кроме того, какого рода данные хранятся в этих табличках? и как они должны использоваться? алгоритмов компрессии известно много - от кодирования групп повторяющихся байтов RLE до LZW и его разновидностей. LZW скорее всего не пойдет, т.к. довольно требовательный к объему ОЗУ (по меркам AVR), а вот RLE запросто.
но ведь на распаковку перед использованием уйдут ресурсы МК... это тоже не стоит забывать
кроме того, какого рода данные хранятся в этих табличках? и как они должны использоваться? алгоритмов компрессии известно много - от кодирования групп повторяющихся байтов RLE до LZW и его разновидностей. LZW скорее всего не пойдет, т.к. довольно требовательный к объему ОЗУ (по меркам AVR), а вот RLE запросто.
но ведь на распаковку перед использованием уйдут ресурсы МК... это тоже не стоит забывать
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
проц - мега168. И так все будет во флэше. Компрессия будет производиться на большом компутере, хранить принципиально надо в аврке ) Скорость работы не принципиальна - аврка практически ничего не делает - данные - время включения и выключения устройств.
RLE это хорошо, но его эффективность с числовыми данными для меня очень сомнительна, я не очень понимаю что он сможт там сжать. Поясните, если не трудно
Данные - инты, от 0 до 65535, просто числа. Размерность возьмем 3х20 Например
RLE это хорошо, но его эффективность с числовыми данными для меня очень сомнительна, я не очень понимаю что он сможт там сжать. Поясните, если не трудно
Данные - инты, от 0 до 65535, просто числа. Размерность возьмем 3х20 Например
Код: Выделить всё
0 20 132 153 131 ... 4346
10 23 543 433 234 ... 4533
1 7 9 12 25 ... 14
Последний раз редактировалось BCluster Чт июл 09, 2009 10:12:38, всего редактировалось 7 раз.
- Реклама
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Ну так по-любому, у вас сразу все таблицы использоваться на будут, организуйте динамическую загрузку по мере необходимости, вы же пишете о большом компутере, да и управлять переферией можно прямо с компа. АВРка нужна при автономной работе, ну и для того чтобы сбросить собранные данные на комп.
Может я чего не допонимаю, проникнуть в суть ваших замыслов не имею возможности, не эктрасекс
Может я чего не допонимаю, проникнуть в суть ваших замыслов не имею возможности, не эктрасекс
- Lonleystranger
- Потрогал лапой паяльник
- Сообщения: 361
- Зарегистрирован: Ср янв 21, 2009 00:45:33
Я так понимаю задачка контрольной для института. Примените самый простой алгоритм - если размер массива известен, оставьте пустое место равное массиву, остальное забивайте так: если есть повторяющаяся последовательность знаков-пишете сколько знаков повторяются, далее сам знак и бит, естественно присутствия сжатия. Распаковываете такие массивы в пустое пространство по очереди. Вот и все. Собственно самый простой и самый малоэффективный метод. Зато занимает мало ресурсов контроллера (в смысле не памяти, а программного кода
). Если посложнее - почитайте http://book.itep.ru/2/26/comp_26.htm
http://ru.wikipedia.org/wiki/Сжатие_данных
http://ru.wikipedia.org/wiki/Сжатие_данных
Последний раз редактировалось Lonleystranger Чт июл 09, 2009 10:22:57, всего редактировалось 1 раз.
Человек умный - объяснит
Глупый - будет разбрасываться умными словами.
Глупый - будет разбрасываться умными словами.
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
девайс имеет 60 режимов - каждый этот режим - такая вот матрица. Задача запихнуть все это в 168 мегу. Грубо говоря есть 4 плеера и нуна включать разные файлы для каждого режима в определенные моменты времени. Еще есть вариант хранить эти данные в нанде с которым работает непосредственно плеер - но это сложно с другой стороны - под плеер придется писать софт, а там все малость не так, как я привык. Внешнюю память может быть и можно подключить, но этот вариант стоит рассматривать как последний - на плате для него места нет, и васче 
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
480 байт это матрица на все 4 устройства. Но - 60 режимов - 28800 байт. Задача не стоит конкретно - 60 режимов и все. Просто нужно запихать как можно больше этого дела в камень.Насколько я разбираюсь в колбасных обрезках, для управления 4-мя(у) устройствами нужно 4 управляющие матрицы, они у вас по 480 байт - итого 1920 байта, не такая уж и большая нагрузка на память
- Lonleystranger
- Потрогал лапой паяльник
- Сообщения: 361
- Зарегистрирован: Ср янв 21, 2009 00:45:33
Повторяющиеся последовательности есть везде, надо найти закономерность, впрочем решать Вам, и книжечки гляньте, полезные. Я когда-то составлял матрицу для управления светодиодами, но там я знал эти последовательности, где прямые(допустим 10 байт)-заменял на 2 байта (1 описание, 1 содержание), где обратные- тоже два байта, в описательном бит знака сброшен. Опять-же говорю-Вам решать, никто в проблеме лучше не разбереться, по крайней мере если суть не знатьBCluster писал(а):Два - данные числовые, поэтому говорить о повторяющихся последовательностях трудно.
Человек умный - объяснит
Глупый - будет разбрасываться умными словами.
Глупый - будет разбрасываться умными словами.



