|
Методы фильтрации сигнала, получение частотных составляющих сигнала - спектра |
|
|
|
Feb 27 2013, 09:27
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016

|
Народ подскажите какие методы фильтрации сигнала существуют вообще. Кроме цифр фильтров, фурье в разных реализациях.
Вообще без использование синусов косинусов для описания гармонического сигнала есть что-то? Почему именно через длину окружности вычисление углов описывают сигналы.
Вот смотрел вроде что-то про CIC фильтры там без умножения на линиях задержки и сложения как я понял построено. Вот что-то подобное как получить максимальную крутизну АЧХ фильтра, при этом минимальное кол-во вычисление сделать. Вопрос просто так ради интереса. Особа в этих сферах не копал.
|
|
|
|
|
 |
Ответов
|
Mar 4 2013, 06:40
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016

|
Цитата(ivan219 @ Mar 4 2013, 09:42)  Не любите умножение? Складывайте!Если сигнал представлен в целых числах то сдвинув на один бит в право мы делим его на 2 а если влево то умножаем. Пример: есть сигнал S нам надо умножить его на 1.5 как это сделать? Да просто 1.5 * S = S + S / 2 т.е. к исходному сигналу прибавили тот же сигнал только делённый на два! Причем здесь люблю не люблю. Вопрос в оптимизации - минимизации вычислений на 8бит МК для получения спектра. Отсюда и желание уйти от дробных операций в целочисленные. Понятное дело что сдвиги дают умножение и деление. Цитата У вас немного не правильный ход мыслей. Вы в одну группу ставите цифровые фильтры, вейвлеты, Фурье и CIC… И к тому же сначала вы хотели методы фильтрации, потом вычисления спектра. Классификация должна делить на группы по определенным признакам, каждая группа в свою очередь делится на подгруппы и т.д. и т.п. Да видимо вы правы наверно быстрее получить спектр черех FFT, чем вычислять ребенку из 20-ти 8-ми порядковых цифр БИХ. фильтров. Что-то я как-то зациклился на фильтрах. А ведь они наверняка только для фильтрации выделения какого либо сигнала и применяются. Просто на них я сразу глаз положил что можно в целочисленные операции вычисления перевести пересчитав коэффициенты. Цитата Например, по типу сигнала фильтры делятся на: цифровой и аналоговый; по виду передаточной функции: эллиптические, Баттерворта, Чебышева… цифровые фильтры можно разделить на: рекурсивные и нерекурсивные и т.п. В данном случае определитесь, что вы хотите знать, тогда и вопрос будет благозвучный, и не будет вызывать отторжения. А приводить полный список всех фильтров, которые только бывает, никто не будет. Это все понятно - что есть и какое бывает. Ну что мне нужно - нужно для MFCC получить 20 или чуть больше полос спектра. С минимальными вычислениями. И максимальной крутизной среза чтобы получить контрастностный спектр хорошего разрешения по частоте. Как будто у нас высокопорядковые фильтры. Для дальнейшего кидания этих признаков произнесенного слова на распознавания нейронной сетью, а потом может вычисления состояний через HMM для как можно точного распознавания голосовой команды. На гребенке 20ти БИХ фильтров работает. Но хочу как можно быстрее все делать по вычислениям. Вот и крутится вопрос в голове как минимизировать вычисления да еще для 8ми битного МК который не любит операции с плавающей точкой. Не дает моя голова покоя, все лучше и лучше хочет сделать. )))) Цитата Совет только один - найти книжку и почитать. Просветление наступит быстро, а за темными пятнами - сюда, потом. Например: S.L.Marple,Jr. Цифровой спектральный анализ и его приложения. Мир, 1990. Спасибо вечером с работы приду гляну что там. Но я уже столько всего пересмотрел голова квадратная, а ответа быстрее ли будет по вычислениям не могу себе дать нужно пробовать основные методы. Склоняюсь к тому как все делают. Вычисляют спектр через FFT потом накладывают 20 треугольных окон вот и получают гребенку фильтров или правильнее сказать спектров. Незнаю запарился нету опыта в таких делах оптимизации. Да и вообще в ЦОС. Смотрел Лайноса по полифазному FFT как я понял там также нужно расчитывать фильтры 20 штук для получения 20ти полос спектра-фильтрации не уверен что будет быстрее вышеприведенного метода. Да еще там сигнал как я понял должен быть длиннее в зависимости от числа каналов. При 20 или 30 полосах это существенно. При 5ти может и лучше полифазное FFT. Незнаю буду дальше копать.
Сообщение отредактировал TViT - Mar 4 2013, 06:59
|
|
|
|
|
Mar 5 2013, 06:33
|
Частый гость
 
Группа: Свой
Сообщений: 136
Регистрация: 10-04-09
Из: Омск
Пользователь №: 47 461

|
Цитата(TViT @ Mar 4 2013, 12:40)  На гребенке 20ти БИХ фильтров работает. Но хочу как можно быстрее все делать по вычислениям. Вот и крутится вопрос в голове как минимизировать вычисления да еще для 8ми битного МК который не любит операции с плавающей точкой. А что вы привязались к 8-битному контроллеру? Только потому что вы его знаете, а другие нет? Всегда контроллер выбирается под задачу, а не наоборот! 8ми битные контроллеры не предназначены для ЦОС. А от треугольных окон вы собираетесь уходить, используя банк фильтров вместо БПФ? Это на работу алгоритма не скажется впоследствии? Цитата(TViT @ Mar 4 2013, 12:40)  Смотрел Лайноса по полифазному FFT как я понял там также нужно расчитывать фильтры 20 штук для получения 20ти полос спектра-фильтрации не уверен что будет быстрее вышеприведенного метода. Да еще там сигнал как я понял должен быть длиннее в зависимости от числа каналов. При 20 или 30 полосах это существенно. При 5ти может и лучше полифазное FFT. Незнаю буду дальше копать. Какие 20 штук фильтров? Нужно рассчитать только одно окно, которое длиннее окна БПФ в целое число раз. Там не сигнал должен быть длиннее, а окно БПФ будет короче. Почитайте еще это http://www.dsplib.ru/content/polyphasefft/polyphase.html
|
|
|
|
|
Mar 5 2013, 07:18
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016

|
Цитата(STAR_IK @ Mar 5 2013, 10:33)  А что вы привязались к 8-битному контроллеру? Только потому что вы его знаете, а другие нет? Всегда контроллер выбирается под задачу, а не наоборот! 8ми битные контроллеры не предназначены для ЦОС. А от треугольных окон вы собираетесь уходить, используя банк фильтров вместо БПФ? Это на работу алгоритма не скажется впоследствии? Да просто упростить максимально хочу и посмотреть где предел после которого не выйдет распознать сносно команду. В перспективе хочу на 8ми битном сделать еще и для дешевизны. А сейчас макетка работает на AVR32 UC3 серии. На ней быстро за секунду распознает после произнесения слова. Но как сказал хочу максимально оптимизировать и упростить устройство по всем параметрам. На работу алгоритма не скажется. Поскольку это всего лишь вычисление признаков сигнала. Чем больше полос спектра разрешение тем лучше распознавание. Там разные реализации MFCC есть. И по кол-ву фильтров и по кол-ву DCT коэффициентов и по диапазону этих коэф-тов. По методам классификации нейронные сети или HMM тоже по арзному делают. Цитата Какие 20 штук фильтров? Нужно рассчитать только одно окно, которое длиннее окна БПФ в целое число раз. Там не сигнал должен быть длиннее, а окно БПФ будет короче. Почитайте еще это http://www.dsplib.ru/content/polyphasefft/polyphase.htmlДа я смотрел на dsplib.ru там понятнее всего расписано, но видимо ничего не понял. Спасибо. У Лайноса просто написано что нужно расчитать фильтр его ИХ будет требуемым окном. Значит например у нас сигнал длинной секунда при Fs=8000 соответственно 8000 отсчетов. Я разбиваю сигнал на временные окна чтобы для каждого вычислить гребенку-спектр, например 20 окон таймслотов. Получаю 400 значений в окне. Проверяю на четность потому что длина сигнала будет разной. (это алгоритм захвата выделения команды возвращает разные длины сигнала в зависимости кто как сказал слово - быстрее медленнее). Накладываю окно на 400 значений после него на краях задавленый сигнал будет в завис от окна. Делю эти 400 значений после окна на 20 полос окнами да? Почленно складываю эти 20 каналов по 20 значений и эти 20 значений кидаю на FFT так? Не понимаю как делать из 20ти значений FFT там ничего не успеет посчитаться. Или суб полосы нужны просто для уменьшения вычислений? И их не нужно 20шт по кол-ву требуемых полос? А достаточно 4-5 как у Лайноса?
Сообщение отредактировал TViT - Mar 5 2013, 19:25
|
|
|
|
|
Mar 6 2013, 09:41
|
Частый гость
 
Группа: Свой
Сообщений: 136
Регистрация: 10-04-09
Из: Омск
Пользователь №: 47 461

|
Цитата(TViT @ Mar 5 2013, 13:18)  Значит например у нас сигнал длинной секунда при Fs=8000 соответственно 8000 отсчетов. Я разбиваю сигнал на временные окна чтобы для каждого вычислить гребенку-спектр, например 20 окон таймслотов. Получаю 400 значений в окне. Проверяю на четность потому что длина сигнала будет разной. (это алгоритм захвата выделения команды возвращает разные длины сигнала в зависимости кто как сказал слово - быстрее медленнее).
Накладываю окно на 400 значений после него на краях задавленый сигнал будет в завис от окна. Делю эти 400 значений после окна на 20 полос окнами да? Почленно складываю эти 20 каналов по 20 значений и эти 20 значений кидаю на FFT так?
Не понимаю как делать из 20ти значений FFT там ничего не успеет посчитаться. Или суб полосы нужны просто для уменьшения вычислений? И их не нужно 20шт по кол-ву требуемых полос? А достаточно 4-5 как у Лайноса? Ну во-первых, для FFT лучше буфер длинной 2^m, т.е. если хотите близкое к 20, то либо 16, либо 32. Полифазное FFT – это по сути обычное FFT, но который проредили по частоте, т.е. часть выходных коэффициентов просто взяли и выкинули. А если они нам их все равно выкидывать, зачем их рассчитывать? Но чтобы восполнить пробелы в частотном спектре, возникшие вследствие прореживания, нужно расширить АЧХ оставшихся бинов. Бин это по сути один из фильтров, образующих гребенку и имеющий АЧХ применяемого окна, разумеется смещенной по частоте. Так вот, в случае обычного FFT с прямоугольным окном АЧХ бина имеет вид sinc-функции. Применяя окно мы изменяем АЧХ бина, при этом расширяя его. Следовательно нужно подобрать такое окно, которое нам даст нужное перекрытие АЧХ бинов при частотном прореживании, т.е. полифазном FFT. На прикрепленном рисунке приведены АЧХ бинов для обычного FFT с прямоугольным окном и полифазного с прореживанием в 2 раза для прямоугольного окна и рассчитанного заранее. Окно рассчитывается как КИХ фильтр. Видно что частотное перекрытие сохранилось, но количество бинов уменьшилось в 2 раза, а следовательно и требуемые ресурсы на вычисление уменьшились в 2 раза. Поясню как получается прореживание по частоте, если вы еще не поняли из ссылки, которую я привел. Берем буфер размера 2*N и складываем первую половину буфера со второй, после чего от буфера размера N делаем обычное FFT. Перейдем к вашему примеру. Берем буфер 384 (400 не подходит, т.к. не делится на степень двойки) и применяем к нему окно. Потом делим его например на 12 более мелки буферов и получаем буфер размером 32 от которого и вычисляем FFT. В итоге на выходе получаем разом 32 коэффициента, пропорциональных энергии сигнала, попавшей в полосу одного фильтра гребенки (бина). Итого одно окно размером 384 и одно FFT для расчета сразу 32 отчетов. Если не хотите терять сигнал в промежутках, когда он подавляется окном, то нужно также делать FFT с перекрытием.
|
|
|
|
Сообщений в этой теме
TViT Методы фильтрации сигнала Feb 27 2013, 09:27 V_G Для начала хотя бы 3 курса вуза по радиотехническо... Feb 27 2013, 10:58 TViT Цитата(V_G @ Feb 27 2013, 14:58) Для нача... Feb 27 2013, 11:12 thermit ЦитатаTViT:
Это не конструктивный ответ. Хотябы сс... Feb 27 2013, 11:36 ivan219 Как это в CIC фильтре нет умножения???
Оно есть... Feb 27 2013, 17:17 TViT Цитата(ivan219 @ Feb 27 2013, 21:17) Как ... Feb 27 2013, 17:39  Fat Robot Найти "знающих людей", которые будут гот... Feb 27 2013, 20:53 V_G Цитата(TViT @ Feb 27 2013, 19:27) Вообще ... Feb 28 2013, 02:53 TViT ЦитатаНайти "знающих людей", которые буд... Feb 28 2013, 08:20 TSerg Книжки по DSP читать не пробовали?
А пора бы уже. Feb 28 2013, 08:52 STAR_IK Цитата(TViT @ Feb 28 2013, 14:20) Может м... Mar 4 2013, 04:53     TViT Вот оно в чем дело.... Понятно. Хитро придумано... Mar 6 2013, 16:42   Kluwert Цитата(STAR_IK @ Mar 5 2013, 10:33) А что... Mar 5 2013, 11:54    STAR_IK Цитата(Kluwert @ Mar 5 2013, 17:54) Эй, у... Mar 6 2013, 05:59     SyncLair Цитата(STAR_IK @ Mar 6 2013, 09:59) Задач... Mar 7 2013, 12:07      TViT Цитата(SyncLair @ Mar 7 2013, 16:07) Эххх... Mar 7 2013, 18:57       TViT Все Старик догнал, собственно вы все и расписали д... Mar 8 2013, 15:18 TSerg Совет только один - найти книжку и почитать. Просв... Mar 4 2013, 05:45 TViT Господа ненадо возвышаться друг перед другом, кажд... Mar 6 2013, 07:25 STAR_IK Окно Блэкмана или Хэмминга это тоже ИХ ФНЧ. Назнач... Mar 7 2013, 02:54 TViT А мне свертку делать моего вх буфера 384 сэмпла с ... Mar 7 2013, 08:22
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|