Jump to content
    

Не годится. Смещенные гауссы не образуют взаимноортогонального базиса, а я это требование озвучила с самого начала, как необходимое.

Ну и что? Вы хотите просто жить... Раскладывать нужно на то, на что нужно, а не на то, что проще.

Искать под фонарем...

Share this post


Link to post
Share on other sites

Ну и что? Вы хотите просто жить... Раскладывать нужно на то, на что нужно, а не на то, что проще.

 

Искать под фонарем...

 

Эх Таня... Ну пробует человек этот мир на зуб... Что в этом плохого!? В конце концов вспомните себя в 26... :laughing:

 

Разумные люди понимают наличие разрыва между "формулками" и программной реализацией. В свое время (где-то в 60-х годах) Райш и Уилкинсон написали "Справочник алгоритмов на языке Алгол" для матричных вычислений. А до тех пор лишь в математических журналах алгоритмы на пальцах показывали, вот дело и стояло на месте. Именно с этого момента все эти алгоритмы стали активно использоваться (коммерческие пакеты EISPACK, LINPAСK, LAPACK и т.п.). И плевать, что там алгоритмы на Алголе! Зато написано настолько понятно, что я сама до сих пор тем Справочником активно пользуюсь, потому как в современных пакетах уже не разобраться.

Да, все верно. Хорошие вычислительные алгоритмы - дело очень непростое. А писать ЦОС(не либу вызывать поставляемую с процом, как у bf) это совсем не одно и то-же, что ваять утилитку. Кто не верит - пусть попробует сам. Пишу это специально для говнодиректоров, говноменеджеров и прочих унылых болванов которые в жизни вообще ни строчки кода не написали сами(ну разве что когда катали на экзамене), но думают, что главное "правильно сыграть" руководителя... Ну и еще "горячим головам" которые по молодости и наивности своей рискуют осчастливить какого-то недоумка за миску риса... ;)

 

Ну так и где же ваша хорошая реализация, которую я уже "три года" жду? Или вы тоже, как Oldring, будете кругами вокруг ходить, советовать мне Гугликом по интернетику поискать?

))) Я не так давно гуглил опенсоус вейвлет-проекты. Кстати именно потому вспомнил Вашу просьбу. И почти везде - полнейшее гавно(неуниверсальные процедуры - под определенный базис, системные вызовы внутри вычислительной функции, FIR "в лоб" с поэлементным сдвигом массива, нигде не применена быстрая свертка - хотя где-где а в вейвлетах ей самое место, задействованы "массивные" механизмы расширений языка - как вот на WiKi, неразделимо срощены с кодированием - для 2D и т.д. ... ну и float восновном). Еще опенджпег правда не просмотрел. Он, кстати, целочисленный насколько помню - хорошо для ARM7-9. Все-равно - того что видел вполне достаточно что-бы отсоветовать гуглить... :) Но... Все-таки Вы наглая барышня - вот так брать на понт - мол "а тебе слабо"? Потому у меня к Вам ответное предложение - читайте личку...

Share this post


Link to post
Share on other sites

Ну и что? Вы хотите просто жить... Раскладывать нужно на то, на что нужно, а не на то, что проще.

Искать под фонарем...

И тем не менее, от нелинейных задач, решаемых лишь итерационными методами, хотелось бы уйти даже ценой некоторой неадекватности представления.

 

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

Share this post


Link to post
Share on other sites

И тем не менее, от нелинейных задач, решаемых лишь итерационными методами, хотелось бы уйти даже ценой некоторой неадекватности представления.

Зачем? Цель - неадекватность? Уже почти достигнута. Все спектроскописты раскладывают на "правильные" модельные представления. И варьируют физически понятные параметры. Возьмите два сдвинутых гаусса и разлагайте их 1000 и одним способом по соответствующим базисам, но только не на два гаусса.

Если Ваша истинная цель в этом, - больших Вам успехов.

Share this post


Link to post
Share on other sites

Так я, в общем-то, и спрашивала хорошую реализацию (чтобы под МК годилась), а не ссылок на общеобразовательные ресурсы. А ситуация просто дикая - некто спрашивает про алгоритм (скажем БПФ или БВП), а его отсылают ... к Википедии. А потом тот пыхтит, пытаясь компактно все это запрограммировать. Вот и получается самострок, в котором еще ошибок можно дофига выловить.

 

Давайте-ка я вам дам на словах QL-алгоритм диагонализации симметричных матриц :), и посмотрю как вы споро программку на С++ по моим словам накропаете, и сколько в ней будет ошибок.

 

Разумные люди понимают наличие разрыва между "формулками" и программной реализацией. В свое время (где-то в 60-х годах) Райнш и Уилкинсон написали "Справочник алгоритмов на языке Алгол" для матричных вычислений. А до тех пор лишь в математических журналах алгоритмы на пальцах показывали, вот дело и стояло на месте. Именно с этого момента все эти алгоритмы стали активно использоваться (коммерческие пакеты EISPACK, LINPAСK, LAPACK и т.п.). И плевать, что там алгоритмы на Алголе! Зато написано настолько понятно, что я сама до сих пор тем Справочником активно пользуюсь, потому как в современных пакетах уже не разобраться.

 

А у вас, я гляжу, стиль объяснения такой, чтобы только указочкой на формулки указывать и округлые общие слова говорить. Я не только по себе сужу, но и другим темам, где вы объяснения даете (например, тема "Сложение сигналов в самый узкий"). Вы уж извините меня за прямоту, но у меня сложилось впечатление, что вы сами не понимаете того, что пытаетесь объяснять другим.

 

Понимаю я или нет - это вопрос философский. Но людям, до которых в конце концов доходит, результат обычно нравится. :laughing:

 

Вот когда узнаете, что такое Хаар - вам, барышня, стыдно станет. Хотя бы за сравнение с QL. :biggrin:

Для QL существуют гораздо более хорошие источники и без ваших слов. Голуб, например. Мне его самому до сих пор кодировать не приходилось, но вот когда понадобится - я у вас спрашивать не буду, уж поверьте. :laughing:

 

А вот возиться с алгоритмами сжатия с потерями - приходилось...

Share this post


Link to post
Share on other sites

Я не так давно гуглил опенсоус вейвлет-проекты. Кстати именно потому вспомнил Вашу просьбу. И почти везде - полнейшее гавно(неуниверсальные процедуры - под определенный базис, системные вызовы внутри вычислительной функции, 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 рядок, то снова получилась бы исходная последовательность. Такой циркулянт всегда симметричен относительно главной диагонали, а следовательно, всегда приводим к диагональной форме. Вот его главные собственные вектора и используются как базис для разложения.

 

Вы где-нибудь встречали что-нибудь подобное? А то я не уверена, что излагаю что-то реальное, а не свои фантазии из головы, где всё поперепуталось :).

Share this post


Link to post
Share on other sites

В графике нагляднее, т.к. график - уже матрица, а матрицы допускают, так называемое, сингулярное разложение (SVD). При этом собственные вектора

 

О, барышня, какие вы красивые слова знаете!

Вы, правда, перепутали базисы в SVD с собственными векторами. Но что правда - то правда, с использованием SVD можно много повыкидывать почти без потерь.

 

Можно, я вам ещё одну красивую фразу подскажу? Она вам понравится, обещаю. Итак, "разложение Карунена-Лоэва". Что это такое - посмотрите сами в Википедии. B)

 

Лоэв, лоэв, лоэв, лоэв... :wub:

 

Share this post


Link to post
Share on other sites

К тому же, надо признаться, я "сдвигов", как огня боюсь ... Короче говоря, требуется лишь определить смещения для каждой составляющей, чтобы они легли на свое место в "пазле".

 

Вейвлет-преобразование как раз и характерно тем, что спектральные трассы, особенно низкочастотные,

повторяют сигнал, но в другом масштабе.

Т.е. фазовые вещи сохраняются очень благородно.

 

И не заморачивайтесь Каруненом-лоевым, который от снобизма.

Вейвлет-компрессия, может быть, на 3-10% хуже по сжатию этого самого Карунена,

зато наглядее и проще в исполнении.

Share this post


Link to post
Share on other sites

Всем доброго времени суток! В своё время занимался вейвлетами. Вот несколько сохранившихся книг.

 

 

Кстати, информацию можно поискать на сайте www.exponenta.ru

wavelet.rar

Edited by M_SV

Share this post


Link to post
Share on other sites

Залил в upload/books/dsp/wavelet свою старую подборку статей по вэйвлетам 10-ти летней давности. Там много статей, от вводных до весьма специфических.

 

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

 

P.S. И еще, в Вашем случае это не подойдет, но советую немного ознакомиться с темой compressed sampling/compressive sensing, скорее для понимания вычислительной сложности восстановления сигнала с определенными характеристиками по редко взятым отсчетам: http://dsp.rice.edu/cs. Недавно нам Веттерли как раз небольшой семинар по finite rate of innovation читал. Полиномиальная сложность в решении этой задачи - это очень хорошо по сегодняшним меркам. :)

 

Share this post


Link to post
Share on other sites

можно ли в вейвлет пространстве суммировать (перемножить) два сигнала? т.е. аналог свертки Фурье во временной (частотной) области?

Share this post


Link to post
Share on other sites

можно ли в вейвлет пространстве суммировать (перемножить) два сигнала? т.е. аналог свертки Фурье во временной (частотной) области?

 

Собственно замес в том, что обычное Фурье молчаливо предполагает - сигнал существует всегда (время от минус бесконечность до плюс бесконечность)

В реальной жизни сигналы нестационарны например речь -или импульсный шум (шум транспортного потока)

Вейвлет попытка уйти от классического Фурье-анализа и распространить его на случай нестационарного сигнала

Пытались мы как-то с коллегой лет пять назад сигнал речевой от шума почистить но как-то безуспешно - на временной реализации шум как бе совсем исчез а качество исходного голоса стало как у робота

Share this post


Link to post
Share on other sites

Собственно замес в том, что обычное Фурье молчаливо предполагает - сигнал существует всегда (время от минус бесконечность до плюс бесконечность)

В реальной жизни сигналы нестационарны например речь -или импульсный шум (шум транспортного потока)

Вейвлет попытка уйти от классического Фурье-анализа и распространить его на случай нестационарного сигнала

Пытались мы как-то с коллегой лет пять назад сигнал речевой от шума почистить но как-то безуспешно - на временной реализации шум как бе совсем исчез а качество исходного голоса стало как у робота

эммм, т.е. операцию свертки над коэффициентами одного и того же уровня разложения DWT двух сигналов делать нельзя теоретически? но суммировать можно?

Share this post


Link to post
Share on other sites

У меня явно не изображения, а одномерные сигналы, приближающиеся по форме к кривой Гаусса (кривой нормального распределения). В просторечии я называю их пиками.

 

Значит так. АЦП измеряет напряжение на своем входе всегда с одной и той же периодичностью (обычно это 50Гц, чтобы меньше сказывались сетевые наводки). Долгое время "ничего нет", т.е. на входе присутствует некий постоянный шум или медленный дрейф ("базовая линия"). И вдруг внезапно "выходит" пик - сигнал гауссообразной формы со слегка заметным "хвостом" (задний фронт более пологий, чем передний, тогда как гауссиана полностью симметрична). Обычно за 20-60 секунд входное напряжение успевает достигнуть локального максимума, а затем снова сходит до уровня базовой линии. И так процесс продолжается от нескольких часов до суток с небольшим.

Высокоэффективная газо-жидкостная хроматография или что-то подобное ?

Share this post


Link to post
Share on other sites

Высокоэффективная газо-жидкостная хроматография или что-то подобное ?

 

Оно самое :), плюс капиллярный электрофорез.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...