|
|
  |
Вейвлеты, что, зачем, как |
|
|
|
Nov 22 2010, 18:07
|

山伏
    
Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294

|
Цитата(Tanya @ Nov 22 2010, 19:31)  Ну и что? Вы хотите просто жить... Раскладывать нужно на то, на что нужно, а не на то, что проще.
Искать под фонарем... Эх Таня... Ну пробует человек этот мир на зуб... Что в этом плохого!? В конце концов вспомните себя в 26... Цитата(Xenia @ Nov 22 2010, 19:12)  Разумные люди понимают наличие разрыва между "формулками" и программной реализацией. В свое время (где-то в 60-х годах) Райш и Уилкинсон написали "Справочник алгоритмов на языке Алгол" для матричных вычислений. А до тех пор лишь в математических журналах алгоритмы на пальцах показывали, вот дело и стояло на месте. Именно с этого момента все эти алгоритмы стали активно использоваться (коммерческие пакеты EISPACK, LINPAСK, LAPACK и т.п.). И плевать, что там алгоритмы на Алголе! Зато написано настолько понятно, что я сама до сих пор тем Справочником активно пользуюсь, потому как в современных пакетах уже не разобраться. Да, все верно. Хорошие вычислительные алгоритмы - дело очень непростое. А писать ЦОС(не либу вызывать поставляемую с процом, как у bf) это совсем не одно и то-же, что ваять утилитку. Кто не верит - пусть попробует сам. Пишу это специально для говнодиректоров, говноменеджеров и прочих унылых болванов которые в жизни вообще ни строчки кода не написали сами(ну разве что когда катали на экзамене), но думают, что главное "правильно сыграть" руководителя... Ну и еще "горячим головам" которые по молодости и наивности своей рискуют осчастливить какого-то недоумка за миску риса... Цитата(Xenia @ Nov 22 2010, 19:12)  Ну так и где же ваша хорошая реализация, которую я уже "три года" жду? Или вы тоже, как Oldring, будете кругами вокруг ходить, советовать мне Гугликом по интернетику поискать? ))) Я не так давно гуглил опенсоус вейвлет-проекты. Кстати именно потому вспомнил Вашу просьбу. И почти везде - полнейшее гавно(неуниверсальные процедуры - под определенный базис, системные вызовы внутри вычислительной функции, FIR "в лоб" с поэлементным сдвигом массива, нигде не применена быстрая свертка - хотя где-где а в вейвлетах ей самое место, задействованы "массивные" механизмы расширений языка - как вот на WiKi, неразделимо срощены с кодированием - для 2D и т.д. ... ну и float восновном). Еще опенджпег правда не просмотрел. Он, кстати, целочисленный насколько помню - хорошо для ARM7- 9. Все-равно - того что видел вполне достаточно что-бы отсоветовать гуглить...  Но... Все-таки Вы наглая барышня - вот так брать на понт - мол "а тебе слабо"? Потому у меня к Вам ответное предложение - читайте личку...
--------------------
Нас помнят пока мы мешаем другим... //-------------------------------------------------------- Хороший блатной - мертвый... //-------------------------------------------------------- Нет старик, это те дроиды которых я ищу...
|
|
|
|
|
Nov 22 2010, 18:07
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(Tanya @ Nov 22 2010, 20:31)  Ну и что? Вы хотите просто жить... Раскладывать нужно на то, на что нужно, а не на то, что проще. Искать под фонарем... И тем не менее, от нелинейных задач, решаемых лишь итерационными методами, хотелось бы уйти даже ценой некоторой неадекватности представления. К тому же, надо признаться, я "сдвигов", как огня боюсь  . Имеется в виду вот что. Положим, мой сигнал действительно состоит (т.е. является суммой) из пары сигналов, известной (!) мне формы. То бишь это случай чисто модельный, когда я два гаусса сдвинула до состояния частичного перекрывания, а затем их сложила. Но попробуте-ка вычислить местонахождение эти двух гауссов из суммарного сигнала. При этом в задаче предполагается, что каждый из этих двух исходных сигналов задан на отельном графике с вершиной в точке x=0, а суммарный сигнал находится где-то у черта на куличках в районе x=176. Короче говоря, требуется лишь определить смещения для каждой составляющей, чтобы они легли на свое место в "пазле". Т.е. x1 и x2. Во всем остальном (высоты и сигма), будем полагать, уже подобраны, как надо. Это крайне упрощенная часть общей задачи апроксимации, но и ее я пока осилить не смогла.
|
|
|
|
|
Nov 22 2010, 18:35
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(Xenia @ Nov 22 2010, 20:12)  Так я, в общем-то, и спрашивала хорошую реализацию (чтобы под МК годилась), а не ссылок на общеобразовательные ресурсы. А ситуация просто дикая - некто спрашивает про алгоритм (скажем БПФ или БВП), а его отсылают ... к Википедии. А потом тот пыхтит, пытаясь компактно все это запрограммировать. Вот и получается самострок, в котором еще ошибок можно дофига выловить. Давайте-ка я вам дам на словах QL-алгоритм диагонализации симметричных матриц  , и посмотрю как вы споро программку на С++ по моим словам накропаете, и сколько в ней будет ошибок. Разумные люди понимают наличие разрыва между "формулками" и программной реализацией. В свое время (где-то в 60-х годах) Райнш и Уилкинсон написали "Справочник алгоритмов на языке Алгол" для матричных вычислений. А до тех пор лишь в математических журналах алгоритмы на пальцах показывали, вот дело и стояло на месте. Именно с этого момента все эти алгоритмы стали активно использоваться (коммерческие пакеты EISPACK, LINPAСK, LAPACK и т.п.). И плевать, что там алгоритмы на Алголе! Зато написано настолько понятно, что я сама до сих пор тем Справочником активно пользуюсь, потому как в современных пакетах уже не разобраться. А у вас, я гляжу, стиль объяснения такой, чтобы только указочкой на формулки указывать и округлые общие слова говорить. Я не только по себе сужу, но и другим темам, где вы объяснения даете (например, тема "Сложение сигналов в самый узкий"). Вы уж извините меня за прямоту, но у меня сложилось впечатление, что вы сами не понимаете того, что пытаетесь объяснять другим. Понимаю я или нет - это вопрос философский. Но людям, до которых в конце концов доходит, результат обычно нравится. Вот когда узнаете, что такое Хаар - вам, барышня, стыдно станет. Хотя бы за сравнение с QL. Для QL существуют гораздо более хорошие источники и без ваших слов. Голуб, например. Мне его самому до сих пор кодировать не приходилось, но вот когда понадобится - я у вас спрашивать не буду, уж поверьте.  А вот возиться с алгоритмами сжатия с потерями - приходилось...
--------------------
Пишите в личку.
|
|
|
|
|
Nov 22 2010, 19:05
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(DRUID3 @ Nov 22 2010, 21:07)  Я не так давно гуглил опенсоус вейвлет-проекты. Кстати именно потому вспомнил Вашу просьбу. И почти везде - полнейшее гавно(неуниверсальные процедуры - под определенный базис, системные вызовы внутри вычислительной функции, FIR "в лоб" с поэлементным сдвигом массива, нигде не применена быстрая свертка - хотя где-где а в вейвлетах ей самое место, ну и float восновном). Еще опенджпег правда не просмотрел. Он, кстати, целочисленный насколько помню - хорошо для ARM7-9. Но все-равно - того что видел вполне достаточно что-бы отсоветовать гуглить... Вот и я о том же. Чтобы найти нужное на интернет-помойке, необходимо уже знать, что ищешь  . Но когда это уже узнаешь, то пропадает необходимость искать в интернете. Очень многое запрятано в недра разнообразных библиотек, исходников для которых днем с огнем не сыщешь. DRUID3, поскольку я вижу, что вы человек эрудированный, то спрошу вас вот еще о чем. Не встречали ли вы такого подхода, когда используемый для разложения ортогональный базис берется не с потолка (sin, cos, вейвлеты, теоретико-числовые и пр.), а вычисляется, как собственные векторы некоторой матрицы, строящейся прямо на основе тех экспериментальных данных, которые требуется разложить? В сжатии графики я такие алгоритмы встречала, но реализацию для потоковых сигналов найти не смогла, хотя где-то когда-то слышала, что такое возможно и там. В графике нагляднее, т.к. график - уже матрица, а матрицы допускают, так называемое, сингулярное разложение (SVD). При этом собственные вектора взаимноортогональны по вычислению, а стало быть, заведомо годятся для базиса. Выбираем те, для которых собственные числа самые большие - вот тебе и базисная система. Причем по ней не только всё должно гладко разлагаться, но и даже теоретически результат такого разложения должен обладать наименьшей погрешностью редукции (здесь - понижения размерности) реального пространства измерений, до пространства, образуемого базисом. Кажется (но точно не помню) такую матрицу составляли, как циркулянт - укладывали форму сигнала в верхнюю строку, а каждую ниже лежащую получали циклическим сдвигом на единичку (на одну временную дискрету) влево от того, что находится этажом выше. Например, для сигнала data[5] = { 1, 2, 3, 4, 5 }; матрица получалась такой: 1 2 3 4 5 2 3 4 5 1 3 4 5 1 2 4 5 1 2 3 5 1 2 3 4 Если бы у нее был еще N+1 рядок, то снова получилась бы исходная последовательность. Такой циркулянт всегда симметричен относительно главной диагонали, а следовательно, всегда приводим к диагональной форме. Вот его главные собственные вектора и используются как базис для разложения. Вы где-нибудь встречали что-нибудь подобное? А то я не уверена, что излагаю что-то реальное, а не свои фантазии из головы, где всё поперепуталось  .
|
|
|
|
|
Nov 22 2010, 19:23
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(Xenia @ Nov 22 2010, 22:05)  В графике нагляднее, т.к. график - уже матрица, а матрицы допускают, так называемое, сингулярное разложение (SVD). При этом собственные вектора О, барышня, какие вы красивые слова знаете! Вы, правда, перепутали базисы в SVD с собственными векторами. Но что правда - то правда, с использованием SVD можно много повыкидывать почти без потерь. Можно, я вам ещё одну красивую фразу подскажу? Она вам понравится, обещаю. Итак, "разложение Карунена-Лоэва". Что это такое - посмотрите сами в Википедии. Лоэв, лоэв, лоэв, лоэв...
--------------------
Пишите в личку.
|
|
|
|
|
Nov 26 2010, 11:52
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 10-12-05
Из: Украина
Пользователь №: 12 052

|
Цитата К тому же, надо признаться, я "сдвигов", как огня боюсь ... Короче говоря, требуется лишь определить смещения для каждой составляющей, чтобы они легли на свое место в "пазле". Вейвлет-преобразование как раз и характерно тем, что спектральные трассы, особенно низкочастотные, повторяют сигнал, но в другом масштабе. Т.е. фазовые вещи сохраняются очень благородно. И не заморачивайтесь Каруненом-лоевым, который от снобизма. Вейвлет-компрессия, может быть, на 3-10% хуже по сжатию этого самого Карунена, зато наглядее и проще в исполнении.
|
|
|
|
|
Nov 26 2010, 15:41
|
Группа: Участник
Сообщений: 11
Регистрация: 8-11-10
Пользователь №: 60 721

|
Всем доброго времени суток! В своё время занимался вейвлетами. Вот несколько сохранившихся книг. Кстати, информацию можно поискать на сайте www.exponenta.ru
Сообщение отредактировал M_SV - Nov 26 2010, 14:51
|
|
|
|
|
Nov 26 2010, 17:28
|
Местный
  
Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660

|
Залил в upload/books/dsp/wavelet свою старую подборку статей по вэйвлетам 10-ти летней давности. Там много статей, от вводных до весьма специфических. По теме Xenia я бы взял реальный сигнал и погонял в Матлабе с разными вэйвлетами, чтобы понять, какое семейство лучше подходит под конкретный сигнал. P.S. И еще, в Вашем случае это не подойдет, но советую немного ознакомиться с темой compressed sampling/compressive sensing, скорее для понимания вычислительной сложности восстановления сигнала с определенными характеристиками по редко взятым отсчетам: http://dsp.rice.edu/cs. Недавно нам Веттерли как раз небольшой семинар по finite rate of innovation читал. Полиномиальная сложность в решении этой задачи - это очень хорошо по сегодняшним меркам.
|
|
|
|
|
Jan 13 2011, 03:53
|
Группа: Участник
Сообщений: 13
Регистрация: 22-07-10
Пользователь №: 58 549

|
можно ли в вейвлет пространстве суммировать (перемножить) два сигнала? т.е. аналог свертки Фурье во временной (частотной) области?
|
|
|
|
|
Jan 17 2011, 08:57
|
Частый гость
 
Группа: Участник
Сообщений: 131
Регистрация: 30-11-10
Пользователь №: 61 268

|
Цитата(trex @ Jan 13 2011, 06:53)  можно ли в вейвлет пространстве суммировать (перемножить) два сигнала? т.е. аналог свертки Фурье во временной (частотной) области? Собственно замес в том, что обычное Фурье молчаливо предполагает - сигнал существует всегда (время от минус бесконечность до плюс бесконечность) В реальной жизни сигналы нестационарны например речь -или импульсный шум (шум транспортного потока) Вейвлет попытка уйти от классического Фурье-анализа и распространить его на случай нестационарного сигнала Пытались мы как-то с коллегой лет пять назад сигнал речевой от шума почистить но как-то безуспешно - на временной реализации шум как бе совсем исчез а качество исходного голоса стало как у робота
|
|
|
|
|
Jan 20 2011, 07:04
|
Группа: Участник
Сообщений: 13
Регистрация: 22-07-10
Пользователь №: 58 549

|
Цитата(Andrey_1 @ Jan 17 2011, 10:57)  Собственно замес в том, что обычное Фурье молчаливо предполагает - сигнал существует всегда (время от минус бесконечность до плюс бесконечность) В реальной жизни сигналы нестационарны например речь -или импульсный шум (шум транспортного потока) Вейвлет попытка уйти от классического Фурье-анализа и распространить его на случай нестационарного сигнала Пытались мы как-то с коллегой лет пять назад сигнал речевой от шума почистить но как-то безуспешно - на временной реализации шум как бе совсем исчез а качество исходного голоса стало как у робота эммм, т.е. операцию свертки над коэффициентами одного и того же уровня разложения DWT двух сигналов делать нельзя теоретически? но суммировать можно?
|
|
|
|
|
Jan 20 2011, 16:33
|
Местный
  
Группа: Участник
Сообщений: 257
Регистрация: 10-06-06
Из: Ставрополь
Пользователь №: 17 955

|
Цитата(Xenia @ Nov 16 2010, 01:39)  У меня явно не изображения, а одномерные сигналы, приближающиеся по форме к кривой Гаусса (кривой нормального распределения). В просторечии я называю их пиками.
Значит так. АЦП измеряет напряжение на своем входе всегда с одной и той же периодичностью (обычно это 50Гц, чтобы меньше сказывались сетевые наводки). Долгое время "ничего нет", т.е. на входе присутствует некий постоянный шум или медленный дрейф ("базовая линия"). И вдруг внезапно "выходит" пик - сигнал гауссообразной формы со слегка заметным "хвостом" (задний фронт более пологий, чем передний, тогда как гауссиана полностью симметрична). Обычно за 20-60 секунд входное напряжение успевает достигнуть локального максимума, а затем снова сходит до уровня базовой линии. И так процесс продолжается от нескольких часов до суток с небольшим. Высокоэффективная газо-жидкостная хроматография или что-то подобное ?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|