Войти
ПрограммированиеФорумОбщее

Упаковка графика функции (2 стр)

Страницы: 1 2 3 4 5 Следующая »
#15
21:35, 21 ноя. 2016

kipar
> Разве что если интервал всего один, да и то спорно.
Кнута не читай, сразу отвечай. ;)


#16
0:18, 22 ноя. 2016

Hybernaculum
> При ещё более правильной организации можно и LOG(1) добиться, если очень
> захотеть.

В случае равномерно распределенных точек?
Я думал что данные могут быть довольно прооизвольными.

#17
19:24, 22 ноя. 2016

IROV..
> и?
Это проще упаковать. Поскольку коэффициенты ряда Фурье - это частотный эквалайзер твоей функции, большинство значений которого это нули или близкие к нему значения, которые совсем не обязательно хранить, они избыточны. А для конкретной функции можно подобрать фильтр квантования, который уберет все лишние значения без потери качества.

Вычитание приближенной функции/функций из исходных данных тоже дает результат упрощения, но это аналог рядам Фурье с "пользовательским" базисом. В любом случае для конкретных данных нужно сделать исследовательскую работу чтобы определить подходящий для них метод.

Более эффективно будет с вейвлетами.

#18
20:14, 22 ноя. 2016

foxes

> большинство значений которого это нули или близкие к нему значения
Если не нули, то легче от этого ровно ни насколько. А если есть шум, то нулей не будет вообще.

> можно подобрать фильтр квантования,
Что такое фильтр квантования?

> который уберет все лишние значения без потери качеств
Невозможно выбросить что-то из сигнала без потери качества. Хоть во временной области, хоть в частотной.

#19
20:49, 22 ноя. 2016

Ghost2
> А если есть шум, то нулей не будет вообще.
А если есть шум - то ни что не поможет.
А если задача F(x)=sin(x) или exp(x)?

Если бы да кабы то во рту росли бы грибы - получился бы не рот, а целый огород.
Конкретных данных нет, следовательно можно только гадать.

Ghost2
> Что такое фильтр квантования?
синонимы: отсечение младших бит.

Ghost2
> Невозможно выбросить что-то из сигнала без потери качества.
foxes
> они избыточны.
особенно для вейвлетов.

Пример для использования приближенных функций:
исходные данные (16 бит):
49546; 4233; 65580; 5299; 47700; 35025; 14395; 62648; 141; 59568; 19698; 28972; 52822; 2530; 65231 7598; 44107; 38887; 11371; 63948; 972;

SIN(2001184,5617*I)+1)*32768 =
49442; 4060; 65520; 5086; 47675; 34784; 14390; 62394; 140; 59319; 19684; 28744; 52780; 2337; 65149; 7449; 43979; 38785; 11197; 63889; 758;

разница занимает в два раза меньше места (8 бит):
104; 173; 60; 213; 25; 241; 5; 254; 1; 249; 14; 228; 42; 193; 82; 149; 128; 102; 174; 59; 214;

#20
15:00, 24 ноя. 2016

foxes

> А если задача F(x)=sin(x) или exp(x)?
Там будет много нулей?

#21
17:22, 24 ноя. 2016

Ghost2

тролить больше не кого?
#22
18:25, 24 ноя. 2016

foxes

> тролить больше не кого?
Нет, я просто хочу узнать, с чего у sin(x) будет много нулей?

#23
18:30, 24 ноя. 2016

Ghost2

+ Показать

там будут одни нули, если вначале сказать что дальше будут данные представлены в виде дельта между sin(x) и sin(x)

foxes
Боюсь что достать такие данные потом будет не так быстро как я хотел :)

#24
19:24, 24 ноя. 2016

IROV..

> Молчи, за умного сойдешь
Где уж нам уж. Но пусть foxes таки ответит.

> там будут одни нули
Где там? Мы про спектр sin(x) говорим.

> если вначале сказать что дальше будут данные представлены в виде дельта между sin(x) и sin(x)
А если в первом сообщении сказать, что твоя функция - sin(x), то тебе скажут, что достаточно запомнить амлитуду и фазу.
Ты там выше писал, что "ряд даст столько же коэффициентов сколько и данных". Уже передумал?

#25
0:36, 25 ноя. 2016

Я не знаю с чего вообще нужно использовать разложение в ряды Фурье для полностью вычисляемой функции.
Нужно просто использовать sin(x) вместо набора данных и все.

Ghost2
> Мы про спектр sin(x) говорим.
вот так вот неожиданно беседа, об анализе и представлении конкретных данных различными способами, перетекла в спектр функции sin(x).
"а ты IROV со своей темой иди мимо"
:D

IROV..
> Боюсь что достать такие данные потом будет не так быстро как я хотел :)
У тебя по сути задача реализовать оптимальное вычисление произвольной функции. Которая, по аналогам, в зависимости от оптимальности сегментируется, и каждый сегмент которой представляется приближенной функцией (тут в дело могут пойти хоть бикубические сплайны хоть полиномы, и ряды в том числе). А более точные данные дополняются таблично - обычно это свернутая таблица, к примеру 16к значений.
Естественно в своей совокупности действий это работает медленнее, чем обращение к конкретным табличным данным (ячейки памяти), в любом случае.

Конечно все будет зависеть от конкретных данных и методе реализации, кто тебя знает может ты на плисах алгоритм запилишь, или все значения F(x)=42.
Но мне казалось, твоя приоритетная цель была не скорость, а память.
Вообще я уверен что задачу можно переформулировать и найти тривиальное решение, если ты раскроешь карты ее использования.
В любом случае анализ тех данных, которые у тебя есть теми же рядами не помещает. Только опять же делать это для всего набора данных, а не отдельных сегментов/окна, учитывая твои требования, было бы странно.

#26
2:48, 25 ноя. 2016

IROV..
Самый быстрый способ для произвольной функции это просто хранить всё в памяти. Смысл жать есть только тогда, когда значений очень много, а сама функция простая (относительно). Тогда вместо таблицы её просто считают. Если же функция вида "шум" да ещё и нужно хранить без ошибок, т.е. приближение через какую-то мат функцию не катит... тут никакое сжатие не поможет.

#27
13:13, 25 ноя. 2016

IROV.., не совсем понял задачу по этому мой ответ возможно не подойдёт.
Если известна функция - то вообще не понял зачем хранить её массив. Проще строить онлайн. Если же онлайн построение- довольно длительный процесс, или функции нет изначально, то:
Её значения - могут быть конечным или бесконечным множеством. Если множество конечно, то график можно разбить на нужные сектора (части, диапазоны) до запаковки с указанием собственно что это за диапазон. И при воспроизведении рисовать только то, что необходимо. Пример такой работы - google map.

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

#28
17:58, 25 ноя. 2016

foxes

> перетекла в спектр функции sin(x)
А куда она могла перетечь, если о данных ничего неизвестно, а ТС ко второй странице не удосужился разродиться хоть какими-нибудь пояснениями? Поинт конкретно того обсуждения в том, что даже для sin(x) переход в спектральную область нихрена не даёт.

Потом, все твои рассуждения сводятся к определенным свойствам этих данных. Я исхожу из того, что они произвольны и приближениями/упрощениями пользоваться нельзя. Уж не говоря про то, что автор выше ясно сказал - формат данных это float. А значит, для того, чтобы пользоваться всякими вычитаниям и разложениями, нужно хотя-бы знать динамический диапазон данных.

#29
18:41, 25 ноя. 2016

foxes
>>Вообще я уверен что задачу можно переформулировать и найти тривиальное решение, если ты раскроешь карты ее использования.
Я знаю оптимальное решение если я знаю все карты, а я их знаю

Меня заинтересовал вопрос, а как бы я поступил не имея анализа а просто производный график, наверное единственное свойство которого это 99% неразрывность.

Тут ты прав, первое что в голову приходит это преобразовать такой график в dF и хранить дельта значение - но чем паковать даже такое?

я где-то и когда-то видел легкий и мелкий алгоритм упаковки из семейства lz4

решил послушать людей как обычно

Страницы: 1 2 3 4 5 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.