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

Вообще без использование синусов косинусов для описания гармонического сигнала есть что-то? Почему именно через длину окружности вычисление углов описывают сигналы.

Вот смотрел вроде что-то про CIC фильтры там без умножения на линиях задержки и сложения как я понял построено.
Вот что-то подобное как получить максимальную крутизну АЧХ фильтра, при этом минимальное кол-во вычисление сделать. Вопрос просто так ради интереса. Особа в этих сферах не копал.
V_G
Для начала хотя бы 3 курса вуза по радиотехнической специальности.
TViT
Цитата(V_G @ Feb 27 2013, 14:58) *
Для начала хотя бы 3 курса вуза по радиотехнической специальности.


Это не конструктивный ответ. Хотябы ссылки в студию.
thermit
Цитата
TViT:
Это не конструктивный ответ. Хотябы ссылки в студию.


Ответ более, чем конструктивный. Сцылки есть у гугла. Много.
ivan219
Как это в CIC фильтре нет умножения???
Оно есть!!!
Только одни коэффициент равны 1 а другие 0 и вместе они образуют БИХ фильтр wink.gif
TViT
Цитата(ivan219 @ Feb 27 2013, 21:17) *
Как это в CIC фильтре нет умножения???
Оно есть!!!
Только одни коэффициент равны 1 а другие 0 и вместе они образуют БИХ фильтр wink.gif


Ну я не вдавался в подробности просто наткнулся случайно от сюда сразу и вопрос возник, а как еще можно осуществить фильтрацию и решил тему создать.
http://www.dsplib.ru/content/cic/cic.html
...Главная отличительная особенность CIC фильтров заключается в том, что они не требуют операций умножения....

Цитата
Ответ более, чем конструктивный. Сцылки есть у гугла. Много.

В гугле много чего есть. А для чего форумы существуют? Помоему для того чтобы сэкономить время на поиск огромного кол-ва разной информации, поскольку знающие люди сразу расставят флажки куда нет смысла копать и соответственно куда и как надо копать чтобы охватить интересующую область даже пускай поверхностно.
Fat Robot
Найти "знающих людей", которые будут готовы Вас вразумлять при таком подходе, - отдельная непростая задача.

Успехов.

Цитата(TViT @ Feb 27 2013, 21:39) *
Помоему для того чтобы сэкономить время на поиск огромного кол-ва разной информации, поскольку знающие люди сразу расставят флажки куда нет смысла копать и соответственно куда и как надо копать чтобы охватить интересующую область даже пускай поверхностно.

V_G
Цитата(TViT @ Feb 27 2013, 19:27) *
Вообще без использование синусов косинусов для описания гармонического сигнала есть что-то? Почему именно через длину окружности вычисление углов описывают сигналы.

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

ЗЫ. Вообще-то американцы часто строят свои учебники, опираясь на уровень знаний домохозяек. Прекрасный пример - культовая книга Хоровица и Хилла по схемотехнике. По DSP есть тоже замечательная книга http://www.dspguide.com/pdfbook.htm , требующая не очень глубоких начальных познаний, но все-таки кое-что знать нужно.
TViT
Цитата
Найти "знающих людей", которые будут готовы Вас вразумлять при таком подходе - отдельная непростая задача.


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


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


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

Может мне нужны просто названия алгоритмов или подходов которые позвволяют вычислить спектр. Ну например:

1. Цифр фильтры.
2. Преобразование Фурье.
3. Вейвлеты
4. CIC фильтры.
5...

и т.д.
Вот что еще есть для цели фильтрации получения спектра о чем почитать посмотреть.

Может мой вопрос наивен конечно и нет смысла в названиях алгоритмов поскольку все вытекает из теории, но все же.


Хоровица читал давно давно оч хорошая книга, действительно что называется с нуля для домохозяек или для кружка юный техник.
TSerg
Книжки по DSP читать не пробовали?
А пора бы уже.
STAR_IK
Цитата(TViT @ Feb 28 2013, 14:20) *
Может мне нужны просто названия алгоритмов или подходов которые позвволяют вычислить спектр. Ну например:

1. Цифр фильтры.
2. Преобразование Фурье.
3. Вейвлеты
4. CIC фильтры.
5...
и т.д.

У вас немного не правильный ход мыслей. Вы в одну группу ставите цифровые фильтры, вейвлеты, Фурье и CIC… И к тому же сначала вы хотели методы фильтрации, потом вычисления спектра. Классификация должна делить на группы по определенным признакам, каждая группа в свою очередь делится на подгруппы и т.д. и т.п. Например, по типу сигнала фильтры делятся на: цифровой и аналоговый; по виду передаточной функции: эллиптические, Баттерворта, Чебышева… цифровые фильтры можно разделить на: рекурсивные и нерекурсивные и т.п. В данном случае определитесь, что вы хотите знать, тогда и вопрос будет благозвучный, и не будет вызывать отторжения. А приводить полный список всех фильтров, которые только бывает, никто не будет.
ivan219
Не любите умножение?
Складывайте!
Принцип прост.
Если сигнал представлен в целых числах то сдвинув на один бит в право мы делим его на 2 а если влево то умножаем.

Пример: есть сигнал S нам надо умножить его на 1.5 как это сделать?
Да просто 1.5 * S = S + S / 2 т.е. к исходному сигналу прибавили тот же сигнал только делённый на два!
0.75 * S = S / 2 + S / 4 = S - S / 4;
.
.
.
А делить и умножать на 2, 4, 8...... я описал выше.
TSerg
Совет только один - найти книжку и почитать. Просветление наступит быстро, а за темными пятнами - сюда, потом.
Например:
S.L.Marple,Jr. Цифровой спектральный анализ и его приложения.
Мир, 1990.
TViT
Цитата(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. Незнаю буду дальше копать.
STAR_IK
Цитата(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
TViT
Цитата(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 как у Лайноса?
Kluwert
Цитата(STAR_IK @ Mar 5 2013, 10:33) *
А что вы привязались к 8-битному контроллеру? Только потому что вы его знаете, а другие нет? Всегда контроллер выбирается под задачу, а не наоборот! 8ми битные контроллеры не предназначены для ЦОС. А от треугольных окон вы собираетесь уходить, используя банк фильтров вместо БПФ? Это на работу алгоритма не скажется впоследствии?


Эй, уважаемый, полегче на поворотах! Особенно с фразой " не предназначены для ЦОС". В корне неверная фраза. Докажу в пять минут: вспомните старые добрые АОНы. Ничего, что там выполнялась фильтрация и DTMF-детектирование с помощью алгоритма Гёрцеля пусть и на отсчётах с сильно пониженной разрядностью (вплоть до 1р.). А ваш покорный слуга успешно упихал в ATmega прогу, которая реагировала на хлопок в ладоши (не на любой громкий звук, а именно на хлопок!). И ничего влезло и не плохо работало. Так что не надо маленьких-восьмиразрядненьких обижать.

Насчёт "контроллер выбирается под задачу" верно, да не совсем, иначе тоже можно дойти до маразма. Знавал одного знакомого DSP'шника, которому подай обязательно плавающую запятую и программить он готов только с объектами в полном комфорте. В результате у чела ничего не получилось, он уволился, а в хитросплитении его классов мне теперь разбираться приходится sad.gif
STAR_IK
Цитата(Kluwert @ Mar 5 2013, 17:54) *
Эй, уважаемый, полегче на поворотах! Особенно с фразой " не предназначены для ЦОС". В корне неверная фраза. Докажу в пять минут: вспомните старые добрые АОНы. Ничего, что там выполнялась фильтрация и DTMF-детектирование с помощью алгоритма Гёрцеля пусть и на отсчётах с сильно пониженной разрядностью (вплоть до 1р.). А ваш покорный слуга успешно упихал в ATmega прогу, которая реагировала на хлопок в ладоши (не на любой громкий звук, а именно на хлопок!). И ничего влезло и не плохо работало. Так что не надо маленьких-восьмиразрядненьких обижать.

Насчёт "контроллер выбирается под задачу" верно, да не совсем, иначе тоже можно дойти до маразма. Знавал одного знакомого DSP'шника, которому подай обязательно плавающую запятую и программить он готов только с объектами в полном комфорте. В результате у чела ничего не получилось, он уволился, а в хитросплитении его классов мне теперь разбираться приходится sad.gif


Да, конечно, при желании можно и на 8-битных ЦОС делать, и компьютеры на лампах, и автомобиль из дерева и шкур животных... Раньше люди катались и радовались. Я надеюсь у вас не такое авто, а свой язвительный пост выписали не на ламповом компьюторе.
Задача инженера заключается в оценке современной элементной базы и выбора оптимальных элементов по критериям цена/характеристики для выбранной задачи. Рассматривать 8-битные контроллеры для задач ЦОС, при том, что цена современных 32 и 16-битных контроллеров и DSP вплотную приблизилась к цене 8-битных, а потом еще 90% рабочего времени тратить на то, чтобы уместить алгоритм в эти 8 бит без потере качества это как минимум не профессионально. Тем более когда задача - распознование речи. Каждому контроллеру должно быть свое место.
TViT
Господа ненадо возвышаться друг перед другом, каждый прав и не прав по своему. Серьезные люди вроде.
Я преследую несколько задач. Одни из них это опитизация кода и познание на примере распознавания.

Лучше напишите что нибудь по полифазному ФФТ. Вам основные шаги описать 5 предложений с вашим опытом.

STAR_IK посмотрите личку. Kluwert тоже.
STAR_IK
Цитата(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
Вот оно в чем дело.... Понятно. Хитро придумано! Нам не нужно делить сигнал в 20 раз по желаемому кол-ву полос, а разделить нужно на столько чтобы получить требуемое кол-во бинов. Они же сконцентрированные в соответствующем бине частоы попадающие в полосу пропускания окна. Ну только в вашем примере 32 чтобы степень 2 получалась для FFT.
Я думал накладываем окно Блэкмана или Хэмминга чтобы устранить взаимное влияние соседних буферов, делим на 20 потом почленно складываем и накладываем еще окно и потом на FFT. Остался вопрос как ИХ КИХ фильтра может быть окном, оно же примерно имеет вид sin(x)/x http://dmilvdv.narod.ru/SpeechSynthesis/index.html?fir.html. Я бы понял если АЧХ КИХ фильтра была окном она хоть похожа на окно. А когда что-то похожее на затухающее колебание это может быть окном? (уже чувствую вопрос дилетанта)


Спасибо Старик! ))
STAR_IK
Окно Блэкмана или Хэмминга это тоже ИХ ФНЧ. Назначение окна убирать "растекание" спектра за счет подавления внеполосный пульсаций АЧХ. На рисунке, который я привел для прямоугольных окон, хорошо видны эти медленно затухающие пульсации. Можно конечно взять и известные окна, но внимательно следить за тем, чтобы не было пробелов в спектре или излишнего перекрытия АЧХ бинов. А можно и самому рассчитать окно, как КИХ фильтр в любой программе, чтобы получить то, что нужно и не заниматься перебором всех возможных известных окон. Кстати ИХ вида sin(x)/x только у идеального ФНЧ с АЧХ в виде прямоугольника. Затухающе колебание ИХ не обязательное условие для ФНЧ.
TViT

А мне свертку делать моего вх буфера 384 сэмпла с ИХ КИХ фильтра, но тогда я уничтожу частоты вне ПП КИХ фильтра или почленное умножение как написано на dsplib в теме полифазного FFT, если умножение то ИХ КИХ фильтра должна быть длиной 384 отсчета так? По длине вх буфера.
SyncLair
Цитата(STAR_IK @ Mar 6 2013, 09:59) *
Задача инженера заключается в оценке современной элементной базы и выбора оптимальных элементов по критериям цена/характеристики для выбранной задачи. Рассматривать 8-битные контроллеры для задач ЦОС, при том, что цена .....

Эххх вы бы не могли мне случайно подсказать современный 32 битный микропроцессор который работает на 150 С и стоит ну рублей 1000 и меньше.
TViT
Цитата(SyncLair @ Mar 7 2013, 16:07) *
Эххх вы бы не могли мне случайно подсказать современный 32 битный микропроцессор который работает на 150 С и стоит ну рублей 1000 и меньше.


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