| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Алгоритм выч. спектра сигнала используя вейвлеты |
| Автор: Proger10 1.7.2010, 00:10 |
| Прочитал про вейвлеты. Пишут, что они точнее, быстрее и прочие хорошие вещи) Долго и упорно читал огромное собрание информации по этой теме на этом сайте и исходящих ссылок с него. Очень много узнал нового, но так и не понял, как вообще строится спектр сигнала, используя вейвлеты? Второе, что непонятно, это - что такое вейвлет-пакеты? На этом форуме нашёл такой вопрос, где ответом было - в гугл) куда я, естественно, тоже сходил, но.. и там глухо :( Так и не понял, что называют вейвлет-пакетами? Используя ДПФ построил уже спектр, теперь хочу получить небольшой опыт по использованию вейвлетов, разобраться что это такое и что из этого можно извлечь положительного в задачу распознавания речи. (покуда podval что-то не очень лестно отзывался о вейвлетах именно при распознавании речи). Может что-то полезное там всё-таки есть, что в купе с другими будет получен некоторый выигрыш при решении задачи?) |
| Автор: W4FhLF 1.7.2010, 10:35 |
| Вообще для начала следует понять, что все инструменты хороши для определённых целей. Нет абсолютно плохих и абсолютно хороших методов. Второе, использовать вейвлеты непосредственно для распознавания конечно же никак нельзя. Насколько я понимаю речь идёт о препроцессинге. В спектральной области мы можем подавить гармоники определённой частоты, в области вейвлетов можно подавить эффекты разного масштаба, которые заранее известно, что не связаны с речью и представляют собой некоторый шум. При вейвлет преобразованиях никакого спектра не строится. Главное их преимущество как раз в том, что мы остаёмся в том же пространстве во временной области, в отличии от ДПФ, где имеет место быть переход в частотную область и мы уже теряем множество информации об эффектах, которые имеют место быть в исходном сигнале. А чтобы лучше понять, что такое вейвлеты и как они работают на реальных примерах и задачах и советую использовать Matlab Wavelet Toolbox и пошаговое руководство, которое идёт с ним же. |
| Автор: Proger10 1.7.2010, 15:48 | ||||
Да, речь о предпроцессинге идёт, а не о полном переходе на вейвлеты.
Вот тут не очень понятно.. Мы можем через вейвлеты как-то получать гармоники определённой частоты? Просто, если вейвлеты не позволяют строить спектра, то чего нам предлагают делать вейвлеты?)
Спасибо! Поставлю Матлаб, интересно будет посмотреть их в действии, прежде, чем я сам приступлю к их кодингу) |
| Автор: Proger10 1.7.2010, 17:32 |
| Хм, точно Спасибо за ссылку! Многое уже прояснилось! Хотя немного что разобрал там. Кстати, а нет ли каких готовых программ, которые строят вейвлетовые графики? Так гораздо проще было бы понять, что из себя вейвлеты представляют. Говоришь там в микрофон, а оно тебе сразу вейвлетами график разукрашивает... Вообще, график на сонограмму похож, но, чувствую, именно это меня с толку и сбивает сейчас.. Там в вейвлетах какое-то другое видение мира должно быть |
| Автор: Pavia 1.7.2010, 18:46 | ||||
Не согласен. При вайвлет преобразовании мы получаем график который называется спектором. Спектр- есть распределение чего либы не обязательно частот. Во вторых если взять в качестве базового вайвлета sin или cos то получаем настоящий спектр (вернее сонограмму) и именно имеем переход в частотную область.
Еще как можно. |
| Автор: Proger10 1.7.2010, 18:50 |
| А что такое, кстати, вейвлет-пакеты? Пока не дошёл до определения "базовый вейвлет" |
| Автор: Фантом 1.7.2010, 22:52 | ||
Не совсем удачно получилось. Правильнее было бы сказать, что вейвлет-преобразование - это представление исходного сигнала в виде разложения по базисным функциям некоторого "характерного" для данного сигнала вида (причем базис не обязательно будет полным). В этом смысле преобразование Фурье - фактически частный случай вейвлет-преобразования (с синусоидой в качестве "характерного" вида). Поскольку базис для преобразования Фурье полон, то теоретически при этом преобразовании ничего не теряется. А практически - потери происходят из-за использования конечного числа членов разложения. |
| Автор: Pavia 2.7.2010, 00:41 | ||
Но после любого преобразования одни признаки становятся линейно не разделимыми, другие напротив разделимыми. |
| Автор: Фантом 2.7.2010, 00:56 | ||
Насчет ознозначно - это верно. Но вот полным такое разложение не является. Тривиальнейший пример - возьмите один член разложения и попробуйте восстановить по нему исходный сигнал. |
| Автор: W4FhLF 2.7.2010, 03:37 |
| Ну ладно, более опытные товарищи с термионологией меня раскатали Как? |
| Автор: Proger10 3.7.2010, 02:55 | ||
Что-то совсем не пойму.. Читаю вот здесь: http://www.mathworks.com/access/helpdesk/help/toolbox/wavelet/ch01_i10.html#1000760
1. А откуда взять вейвлет-то этот? 2. Насколько я понял по этому шагу, мы берём какой-то вейвлет) и сравниваем насколько он совпадает с нашим сигналом, что мы получим из переменной "C". Переменная двух аргументов, значит сдвиг и масштаб нам задавать самостоятельно? (подбирать, грубо говоря, чтобы максимально с сигналом совпадал?) 3. Сдвигаем правее вейвлет и получаем очередной коэффициент 4. Масштабируем и снова получаем кучу коэффициентов с шагов 1-3 5. Масштабируем, масштабируем.. И собственно что?)) Неужели по таким простым действиям можно получить что-то полезное?)) |
| Автор: W4FhLF 3.7.2010, 12:21 | ||
| Вообще руководство по Wavelet Toolbox (к тому же без использования этого самого Wavelet Toolbox) не заменит хорошую книжку по вейвлетам. Все эти вопросы от того, что кто-то ленится прочесть читать литературу. Предлагаешь цитировать здесь то, что уже давно написано в книгах? 1. Вычислить. Вейвлет это в сущности функция, которая удовлетворяет ряду условий. Существует много видов вейвлетов и для каждой задачи следует выбирать свой. Например для распознавания пиков и ступенек в данных я использую вейвлет haar или db1. Для подавления высокочастотного шума определённого характера db4, а для подавления импульсной реакции АЦП своей системы записи Morlet. Всё зависит от задачи короче. На С++ простейший вейвлет Haar'a может выглядеть так:
2. Обычно проходятся по всем значениям сигнала и на них делают вейвлет преобразование. Преобразование на каждой точке и есть преобразование с заданным сдвигом (это порядковый номер значения сигнала). Ну и делают это для разных масштабов. А вычисление С есть своего рода свёртка сигнала на заданной точке с функцией вейвлета. |
| Автор: Proger10 3.7.2010, 15:58 |
| Спасибо большое за объяснение первого кода и отдельное за пример на С++! Уже накачал книжек по вейвлетам, приступаю к чтению |
| Автор: Proger10 4.7.2010, 10:10 |
| Посмотрел несколько книг по вейвлетам... не многим понятнее стало))) Сейчас ищу тему вейвлетов по интернету, тут куда более доступным языком написано. Вот, например, отличный док по Хаару, где поэтапно расписано на примере каким образом он работает: http://dmr.ath.cx/gfx/haar/ (там же есть реализация этой процедуры на С). Это для тех, кто будет искать подобную тему Но блин... и после этого мне не понятно как применять его)) Не пойму вот что - вот есть у нас исходный сигнал (отсчёты), а как применять этого Хаара и непонятно) Я могу пройтись по этому массиву (исходного сигнала) как сказано в алгоритме Хаара. Могу пройтись несколько раз (рекурсивно, имею ввиду). Но.. где все эти сдвиги, масштабирование?) Когда мне этими терминами-то оперировать надо, на какой стадии процесса? После каждого прохода Хаара по массиву получается новый массив, состоящий из двух половин (в левой усреднённые пары, в правой - разница пар) - это и есть вейвлет-коэффициенты? Их что ли и строят на графике? |
| Автор: Фантом 4.7.2010, 10:47 |
| Похоже, Вам лучше сначала прочитать что-то совсем общее, не связываясь с каким-то конкретным типом вейвлетов. Посмотрите, например, http://www.astro.spbu.ru/astro/publications/vityazev/wavelet.pdf, думаю, общая идея происходящего станет понятнее. |
| Автор: Proger10 4.7.2010, 11:41 |
| Фантом, спасибо за литературу. Там описывается что-то очень похожее на тот алгоритм, что был тут чуток выше.. Если брать, в качестве примера, вейвлет MHAT - он зависит от двух переменных, тут вроде понятнее.. а Хаар вообще не понять от чего зависит |
| Автор: Proger10 6.7.2010, 00:05 |
| Вот тут нашёл: http://www.krsu.edu.kg/vestnik/2002/v2/a15.html формулу вейвлета Хаара: http://www.krsu.edu.kg/vestnik/2002/v2/img/a15_i01.gif Теперь не пойму вот чего - а те действия с усреднением и разницей в массиве к чему тогда были? То, не Хаар чтоль? Ну вот с этой формулой попроще, надеюсь, будет. Кстати, при подсчёте вейвлет-коэффициентов, интеграл там с какими пределами интегрирования брать? На что указывает эта область интегрирования?) |
| Автор: GTH 3.5.2011, 07:23 |
| Для работы с вейвлетами используйте MatLab. Очень помогает. Кстати, есть неплохой видеокурс по работе с ним, для начинающих. Скачать можно тут: http://www.turbobit.net/z27n2o12xctm.html |