Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Wavelet спектрограмма
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
TViT
Народ всем привет и доброго дружелюбного расположения духа. biggrin.gif (это так на отступление, поскольку предчувствую могут быть гневные сообщения)).

Собственно нужно понять можно ли через Вейвлеты быстрее по вычислениям получить спектр сигнала чем например банк из 20ти 2-4порядковых цифр фильтров.
Вопрос и что мне примерно нужно и понимается под вейвлетами задавал тут, но там пока тишина - http://forum.sources.ru/index.php?showtopic=371824

Знаю здесь водятся люди которые по ЦОС собаку съели, а может еще и кошака ))). Отсылать гуглить и читать километровые формулы не преветствуется. Все это я уже читал и смотрел, с мат не дружу, а времени эксперементально писать программу смотреть как это работает исходя из моего понимания почти нет.


STAR_IK
Есть ощущения что вам нужно преобразование Фурье, а не вейвлет. У вас фильтры имеют одинаковую полосу?? Кстати что такое 2-4 порядковый фильтр не совсем понятно, т.е. совсем не понятно! Нужен спектр - берите БПФ с нужным окном и все! Лучше укажите подробнее вашу задачу, что вы фильтруете 20-тью фильтрами, и что хотите увидеть?
litv
Непонятно .
Вы хоть на чем это всё БЫСТРЕЕ хотите получить. Слово программа конечно наводит.
Одно дело на PC, другое на ПЛИС или DSP процессоре. Быстрота зависит от аппаратуры тоже.

Хотя везде быстрее всего получить спектр готовыми оптимизированными программами расчета FFT.
Под РС - интел библиотеки. и тд......
Вейвлеты медленнее.
TViT
Цитата(STAR_IK @ Feb 4 2013, 14:39) *
Есть ощущения что вам нужно преобразование Фурье, а не вейвлет. У вас фильтры имеют одинаковую полосу?? Кстати что такое 2-4 порядковый фильтр не совсем понятно, т.е. совсем не понятно! Нужен спектр - берите БПФ с нужным окном и все! Лучше укажите подробнее вашу задачу, что вы фильтруете 20-тью фильтрами, и что хотите увидеть?


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

2х или 4х порядковый фильтр это я 2-4 написал упрощенно. Крутизна АЧХ фильтра.
Гребенка фильтров полосовые с разной шириной пропускания например на низких частотах около 200Гц, на высоких нужно меньшее разрешение поэтому 300Гц. Никаких библиотек не нужно. Мне нужен легко переносимый код без библиотек чтобы максимально компактно оптимизировать или изменять код. Да и сам хочу знать как делается и что где вычилсяется. Библиотеки не интересны.
Цитата
Вейвлеты медленнее.

А в чем их преимущество? Они дают более контрастную картину спектра?
Цитата
Лучше укажите подробнее вашу задачу, что вы фильтруете 20-тью фильтрами, и что хотите увидеть?

Тут все ясно
http://forum.sources.ru/index.php?showtopic=363964
STAR_IK
Цитата(TViT @ Feb 4 2013, 16:55) *
Фурье еще дольше выполняется, разве нет, да еще с окнами? Как то у меня ощущение когда читаешь про получение спектра сигнала что люди наоборот уходят от Фурье. А у меня микроконтроллер все делает и максимально нужно чистый спектр получить с минимальным кол-вом вычислений. Да и потом все равно при вычислении MFCC коэффициентов накладывают гребенку треугольных фильтров (окон) на спектр после Фурье, не проще ли сразу гребенку фильтров сделать и сигнал минуя Фурье посыать на цифр фильтры гораздо быстрее помоему?

2х или 4х порядковый фильтр это я 2-4 написал упрощенно. Крутизна АЧХ фильтра.
Гребенка фильтров полосовые с разной шириной пропускания например на низких частотах около 200Гц, на высоких нужно меньшее разрешение поэтому 300Гц.


Я так понимаю вы применяете БИХ фильтры, раз такие порядки маленькие. А проблем с разрядностью нет?? При порядках 2-4 и небольшом количеством фильтров может и нет смысла заморачиваться с БПФ. Но хватит ли вам 4-го порядка?? Какое подавление вы хотите обеспечить и с какой крутизной?? А теперь прикиньте сколько операций умножения нужно на реализацию БПФ, который при этом обрабатывает сразу буфер. По моему мнению, тут подойдет полифазное БПФ (Лайонс - ЦОС, стр 535), с таким окном, при котором АЧХ одного бина будет близка к требуемой треугольной. Тогда вычислительные затраты еще уменьшатся по сравнению с обычным БПФ.
АНТОН КОЗЛОВ
Цитата(STAR_IK @ Feb 5 2013, 07:44) *
Я так понимаю рименяете БИХ фильтры, раз такие порядки маленькие. А проблем с разрядностью нет?? При порядках 2-4 и небольшом количеством фильтров может и нет смысла заморачиваться с БПФ. Но хватит ли вам 4-го порядка?? Какое подавление вы хотите обеспечить и с какой крутизной?? А теперь прикиньте сколько операций умножения нужно на реализацию БПФ, который при этом обрабатывает сразу буфер. По моему мнению, тут подойдет полифазное БПФ (Лайонс - ЦОС, стр 535), с таким окном, при котором АЧХ одного бина будет близка к требуемой треугольной. Тогда вычислительные затраты еще уменьшатся по сравнению с обычным БПФ.

После БПФ и восстановить сигнал не удается как следует. При ОДПФ все частотные компоненты размазываются на всю ширину временного окна. Вот и пришлось мировой общественности вейвлеты придумывать. Гребенка БИХ фильтров, может быть, потребует меньших затрат на вычисления. С плавающей запятой.
TViT
Цитата(АНТОН КОЗЛОВ @ Feb 5 2013, 09:23) *
После БПФ и восстановить сигнал не удается как следует. При ОДПФ все частотные компоненты размазываются на всю ширину временного окна. Вот и пришлось мировой общественности вейвлеты придумывать. Гребенка БИХ фильтров, может быть, потребует меньших затрат на вычисления. С плавающей запятой.

Ну у меня гребенка фильтров работает на целочисленных операциях, я пересчитываю масштабирую коэффициенты фильтра, поэтому скорость еще выше ))

Цитата
Я так понимаю вы применяете БИХ фильтры, раз такие порядки маленькие. А проблем с разрядностью нет?? При порядках 2-4 и небольшом количеством фильтров может и нет смысла заморачиваться с БПФ. Но хватит ли вам 4-го порядка?? Какое подавление вы хотите обеспечить и с какой крутизной?? А теперь прикиньте сколько операций умножения нужно на реализацию БПФ, который при этом обрабатывает сразу буфер. По моему мнению, тут подойдет полифазное БПФ (Лайонс - ЦОС, стр 535), с таким окном, при котором АЧХ одного бина будет близка к требуемой треугольной. Тогда вычислительные затраты еще уменьшатся по сравнению с обычным БПФ.


Я разными порядками пробую до 8го порядка фильтры. Вот вопрос, а может быстрее будет вычислить 2х порядковый фильтр и потом возвести в квадрат полученные числа и разделить все значения на какой-то коэффициент привести к желаемому диапазону или логарифм взять? Будет контрастнее спектр, а по вычислениям незнаю быстрее ли?

Буфер то БПФ обрабатывает, но там слово делится например на 20 временных окон и для каждого нужно вычислить БПФ и наложить треугольные окна чтобы 20 значений на выходе получить по числу фильтров. Так сказать уменьшить разрядность и кол-во обрабатываемой информации посылаемой на нейронную сеть.

Тут пишут что полифизное БПФ не многим лучше (http://www.radioscanner.ru/info/article188), только что по вычислениям, потому как происходит потеря информаци, потом потеря произойдет на этапе наложения 20ти треугольных фильтров(окон) т.е. потеря к разрешению 20ти значений от фильтра в каждом временном окне, не получится ли размазывание сильного слишком много теряется информации придется больше фильтров не 20 а 30 например, а это уже на нейронную сеть нагрузка по вычислениям?
STAR_IK
Цитата(TViT @ Feb 5 2013, 13:12) *
Я разными порядками пробую до 8го порядка фильтры. Вот вопрос, а может быстрее будет вычислить 2х порядковый фильтр и потом возвести в квадрат полученные числа и разделить все значения на какой-то коэффициент привести к желаемому диапазону или логарифм взять? Будет контрастнее спектр, а по вычислениям незнаю быстрее ли?


Честно говоря не понял причем тут нелинейная обработка. Как я понимаю вам нужно определить энергию сигнала, попадающую в полосу одного из фильтров гребенки. При малом порядке фильтр будет иметь малую крутизну, а значит энергия будет размыта. Нелинейной обработкой ситуацию не исправить, т. к. мы не будем знать, что это один размытый тон, или несколько с ниспадающими амплитудами.

Цитата(TViT @ Feb 5 2013, 13:12) *
Буфер то БПФ обрабатывает, но там слово делится например на 20 временных окон и для каждого нужно вычислить БПФ и наложить треугольные окна чтобы 20 значений на выходе получить по числу фильтров. Так сказать уменьшить разрядность и кол-во обрабатываемой информации посылаемой на нейронную сеть.
Тут пишут что полифизное БПФ не многим лучше (http://www.radioscanner.ru/info/article188), только что по вычислениям, потому как происходит потеря информаци, потом потеря произойдет на этапе наложения 20ти треугольных фильтров(окон) т.е. потеря к разрешению 20ти значений от фильтра в каждом временном окне, не получится ли размазывание сильного слишком много теряется информации придется больше фильтров не 20 а 30 например, а это уже на нейронную сеть нагрузка по вычислениям?


Вот смотрите, есть буфер из N действительных отсчетов, при вычислении амплитудного спектра через Фурье получаем N/2 выборок - и все эти N/2 выборок вычисляются разом. Причем я вам предлагал использовать такой размер буфера БПФ, чтобы один бин охватывал всю требуемую полосу. Таким образом получаем набор отсчетов, каждый из которых - это энергия сосредоточенная в требуемой полосе. АЧХ бина можно подправить окном, а количество вычислений уменьшить применяя полифазную реализацию. Посмотрите Лайонса, на странице, которую я указал. Там показана реализация анализатора спектра подобным образом. Другое дело, что для MFCC полоса фильтров гребенки нелинейно увеличивается с ростом частоты - тогда действительно подобный алгоритм не самый лучший вариант. Это и в правду на вейвлет больше походит
petrov
Цитата(TViT @ Feb 5 2013, 11:12) *
Тут пишут что полифизное БПФ не многим лучше (http://www.radioscanner.ru/info/article188)


На информацию по этой ссылке внимания не обращайте, там люди не разобрались что к чему.
TViT
Цитата(STAR_IK @ Feb 5 2013, 12:20) *
Честно говоря не понял причем тут нелинейная обработка. Как я понимаю вам нужно определить энергию сигнала, попадающую в полосу одного из фильтров гребенки. При малом порядке фильтр будет иметь малую крутизну, а значит энергия будет размыта. Нелинейной обработкой ситуацию не исправить, т. к. мы не будем знать, что это один размытый тон, или несколько с ниспадающими амплитудами.

Ну да конечно мне нужно узнать распределение энергии по полосам частот, а чтобы меньше вычислений делать уменьшается разрешение кол-вом фильтров. Я имел ввиду что если возвести в квадрат значения от фильтра то это тоже не линейнай функция (квадрат числа) и получится более контрастное изображение спектра, поскольку будет большее разбегание значений 10^2=100, 100^2=10000 начальные значения различаются в 10раз, а конечные в 100 получается слабые сигнал ослабляются на фоне больших энергий которые в квадрате дают нелинейно еще большее число. Вот ход моих мыслей я так уже делал получается более контрастный спектр как будто фильтры 4х порядковые и т.д. Может это иллюзия и я чтото теряю таким образом...

Цитата(STAR_IK @ Feb 5 2013, 12:20) *
Вот смотрите, есть буфер из N действительных отсчетов, при вычислении амплитудного спектра через Фурье получаем N/2 выборок - и все эти N/2 выборок вычисляются разом. Причем я вам предлагал использовать такой размер буфера БПФ, чтобы один бин охватывал всю требуемую полосу. Таким образом получаем набор отсчетов, каждый из которых - это энергия сосредоточенная в требуемой полосе. АЧХ бина можно подправить окном, а количество вычислений уменьшить применяя полифазную реализацию. Посмотрите Лайонса, на странице, которую я указал. Там показана реализация анализатора спектра подобным образом. Другое дело, что для MFCC полоса фильтров гребенки нелинейно увеличивается с ростом частоты - тогда действительно подобный алгоритм не самый лучший вариант. Это и в правду на вейвлет больше походит


Лайноса конечно скачаю почитаю. Что такое бин?

Для MFCC гребенку в ручную можно также сформировать по увеличению ПП к верхним частотам. Собственно я так и делаю грасчитав соответственно свой банк БИХ фильтров. Вейвлеты это получается автоматически делают? Там что-то делится на 2 после каждого масштабирования, все что я понимаю. В общих чертах можете рассказать про вейвлеты?

fontp
QUOTE (TViT @ Feb 5 2013, 13:02) *
Лайноса конечно скачаю почитаю. Что такое бин?

Для MFCC гребенку в ручную можно также сформировать по увеличению ПП к верхним частотам. Собственно я так и делаю грасчитав соответственно свой банк БИХ фильтров. Вейвлеты это получается автоматически делают? Там что-то делится на 2 после каждого масштабирования, все что я понимаю. В общих чертах можете рассказать про вейвлеты?


Дискретное вейвлет-преобразование это не банк фильтров с произвольно увеличивающейся полосой и расстоянием. Это рекурсивно построенная схема на любом уровне которой полоса частот сигнала которой делится на полуполостные НЧ и ВЧ полосы и проводится сабсамплинг в двое. Рекурсивная, поскольку сигнал НЧ полосы снова обрабатывается такими же КИХ-фильтрами с тем же ядром. И т.д. Получаются наборы коэффициентов разной детальности.
Пара фильтров НЧ и ВЧ сопряжены так, что их ядра обладают ортогональностью.
Что это такое вам знать не важно, поскольку вы формул не любите, но нужно знать, что это свойство позволяет строить обратные преобразования, так чтобы можно было восстановить первоначальный сигнал по коэффициентам вейвлет-преобразования ТОЧНО. То есть дискретное вейвлет преобразование обратимо, а кроме того оно быстрое, поскольку ядра фильтов обычно короткие, а длина последовательности на каждой ступени уменьшается в двое. Этих пар фильтров (ядер преобразования) существуют десятки, разной длины и степени частотного разделения, предложеные для разных приложений. Это если очень коротко

Хорошая подборка книг и готовых программных реализаций по вейвлетам можно найти там
http://autex.spb.ru/wavelet/
petrov
Цитата(fontp @ Feb 5 2013, 15:00) *
Пара фильтров НЧ и ВЧ сопряжены так, что их ядра обладают ортогональностью.
Что это такое вам знать не важно, поскольку вы формул не любите, но нужно знать, что это свойство позволяет строить обратные преобразования, так чтобы можно было восстановить первоначальный сигнал по коэффициентам вейвлет-преобразования ТОЧНО.


Это как с FFT-iFFT точно пока коэффициенты не меняются, а часто делают чтобы "фильтровать", и тут внезапно появляются щелчки. :)
TViT
Цитата
Дискретное вейвлет-преобразование это не банк фильтров с произвольно увеличивающейся полосой и расстоянием. Это рекурсивно построенная схема на любом уровне которой полоса частот сигнала которой делится на полуполостные НЧ и ВЧ полосы и проводится сабсамплинг в двое.


Что это не банк фильтров я понимаю, иначе это называлось бы гребенкой фильтров )) Полуполосный НЧ и ВЧ это как? Я так понимаю НЧ пропускает только низкие частоты до какой-то частоты среза после которой в идеале давит все. А что такое полуполосный НЧ?
Сабсэмплинг это уменьшение семплов - децимация?

Цитата
...Получаются наборы коэффициентов разной детальности.
Пара фильтров НЧ и ВЧ сопряжены так, что их ядра обладают ортогональностью...свойство ортогональность позволяет строить обратные преобразования


Как получаются коэффициенты я полагал после фильтра получатся не коэффициенты, а фильтрованный сигнал? Или получается матрица коэффициентов как при косинусном преобразовании DCT ? А если так то что потом с этой матрицей коэффициентов и сигналом делать?
Обратное преобразование мне не интересно восстанавливать данные мне не нужно. Означает ли это что я могу любые два фильтра взять?

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


А они как то синтезируются сложно эти пары фильтров?
В моем упрощенном понимании как здесь свертка описана например ( http://websound.ru/articles/theory/convolut.htm ) думал берется вейвлет базисный - таблица свертки, делается свертка с сигналом, потом таблица свертки сжимается вдвое снова делается свертка с сигналом получается 2 полосы спектра отфильтрованные сверткой и я думал так далее такие махинации с таблицей свертки (вейвлетом) продолжаются.

Цитата
Хорошая подборка книг и готовых программных реализаций по вейвлетам можно найти там


Много всего всюду скачал - буду разбираться.
fontp
QUOTE (TViT @ Feb 5 2013, 22:30) *
Что это не банк фильтров я понимаю, иначе это называлось бы гребенкой фильтров )) Полуполосный НЧ и ВЧ это как? Я так понимаю НЧ пропускает только низкие частоты до какой-то частоты среза после которой в идеале давит все. А что такое полуполосный НЧ?
Сабсэмплинг это уменьшение семплов - децимация?


Полуполосный НЧ означает, что пропускает нижнюю половину частот (от Найквиста). А ВЧ фильтр пропускает верхнюю половину.
Только они не произвольные, а (квадратурные) сопряженные и не очень хорошие (в смысле равномерности пропускания/подавления).
Сабсэмплинг - децимация

QUOTE (TViT @ Feb 5 2013, 22:30) *
Как получаются коэффициенты я полагал после фильтра получатся не коэффициенты, а фильтрованный сигнал? Или получается матрица коэффициентов как при косинусном преобразовании DCT ? А если так то что потом с этой матрицей коэффициентов и сигналом делать?
Обратное преобразование мне не интересно восстанавливать данные мне не нужно.

Это как посмотреть. На выходе фильтров получается фильтрованый сигнал, но его отсчеты как раз и являются коэффициентами преобразования,
как при DCT. Ядром преобразования только являются не косинусы, а локализованные ядра фильтров

QUOTE (TViT @ Feb 5 2013, 22:30) *
Означает ли это что я могу любые два фильтра взять?
А они как то синтезируются сложно эти пары фильтров?
В моем упрощенном понимании как здесь свертка описана например ( http://websound.ru/articles/theory/convolut.htm ) думал берется вейвлет базисный - таблица свертки, делается свертка с сигналом, потом таблица свертки сжимается вдвое снова делается свертка с сигналом получается 2 полосы спектра отфильтрованные сверткой и я думал так далее такие махинации с таблицей свертки (вейвлетом) продолжаются.
Много всего всюду скачал - буду разбираться.


Они достаточно сложно синтезируются эти пары фильтров. В книгах описано как, но сами не получите - вывод совсем не тривиальный
Но любые ядра (фильтры) можно найти в интернете - это же просто набор чисел для FIR. Некоторые ядра можно найти здесь
http://wavelets.pybytes.com/wavelet/sym4/
Добеши, Ингрид получила за них множество математических премий и была избрана Президентом Международного математического союза.
http://ru.wikipedia.org/wiki/%D0%94%D0%BE%...%80%D0%B8%D0%B4
http://en.wikipedia.org/wiki/Daubechies_wavelet

QUOTE (petrov @ Feb 5 2013, 15:02) *
Это как с FFT-iFFT точно пока коэффициенты не меняются, а часто делают чтобы "фильтровать", и тут внезапно появляются щелчки. sm.gif


Не, ну что тут внезапного - при блочной обработке всегда появляются разрывы на границах блоков. Точно так же как и для любого блочного преобразования
TViT
Что же примерно ясно куда копать спасибо fontp и всем кто принимал участие и не прошел мимо ))
Вы просто кладезь мудрости. Беседовать с вами одно наслаждение ))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.