-
Как программно выделить определённую частоту(звука)? И отфильтровать её.
-
FFT?
-
Можно и без FFT.
-
> pavia © (26.09.07 07:36) [2]
Можно и без того, о чем Вы подумали:)
-
> Jeer © (26.09.07 10:11) [3]
А о чём он подумал?
-
Делается это так, берем пробразование Фурье. Прогоняем не для всех частот, а только для одной- нужной. После получив ее амплитуду и фазу. Можно отфильтровывать. Отфильтровывание идет путем вычитания из амплетуды нашу волну.
Можно, через БПФ. Делаем быстрое преобразование Фурье. В полученном спекторе занижаем нужную нам частоту. И делаем обратное преобразование фурье.
Лучше, через БПФ так-как не всегда получается создать идеальный фильтр. А используя БПФ можно построить более гибкий фильтр.
Есть еще способ. Но его я расказывать не буду, пусть Jeer рассказывает раз он знает о чем я подумал.
-
> Xdebugger © (25.09.07 19:30)
Для начала вернемся к вопросу автора. "Программно выделить определенную частоту"
В вопросе неоднозначность, а именно: 1. Определить наличие некоторой частоты в сигнале (например, в системах тонального кодирования, DTFM и пр). 2. В сигнале с широким спектром определить уровень сигнала искомой частоты. 3. Если "частота выделена", то говорить о ее фильтрации уже бессмысленно - она и так синус или косинус, как нравится.
Прежде всего следует уяснить, что в цифровой технике нет непрерывного спектра, спектр сигнала линейчатый, что связано с процессами временного квантования, а значит нужно говорить о разрешающей способности при идентификации составляющих частот.
1.Если вопрос относится к первому типу: - можно использовать разновидность прямого преобразования Фурье - алгоритм Герцеля (Hoertzel). Алгоритмически и по затратам намного эффективнее как классического ПФ, так и БПФ. - вторым подходом может являться нерекурсивная цифровая фильтрация на . основе гребенчатого фильтра. Целесообразность использования определяется степенью разрешения по частоте.
2. Если вопрос относится ко второму типу: - уже упомянутое прямое преобразование Фурье (ПФ или БПФ - не суть) + методы устранения явлений Гиббса (windowing - "окнование") - классические фильтры (рекурсивные или нерекурсивные) полосно-пропускающего типа. - вейвлет-преобразование, позволяющее выявить "структуру" сигнала, а также ответить на вопрос о спектральной плотности мощности сигнала в заданной тонкой структуре, т.е. полосе частот.
P.S. Важным фактором, часто определяющим единственно подходящий вариант "детектирования", является необходимость on-line или возможность off-line обработки. Пока нет ответа на этот вопрос, можно только теоретизировать.
-
Спасибо всем за инфу! //Hfpldjtybt kbxyjcnb Вообщем, дело в том, что мне надо сделать: 1.Off-line фильтр частот(Можно задать определённый диапазон частот и отфильтровать их). 2.Возможность частотного среза в своей проге.
Если кто знает, где можно найти подробную инфирмацию, пожалуйста, Киньте ссылку.
-
> Вообщем, дело в том, что мне надо сделать
Делай. Мы не возражаем.
Ты вообще-то в [6] вник ? Или там буквы для тебя незнакомые сплошь и рядом ?)
-
> DeBUGger13 © (08.10.07 14:44) [7]
> задать определённый диапазон частот и отфильтровать их
Полосовой фильтр (пропускающий или заграждающий/режекторный). Способ реализации зависит от требований, но если off-line - можно практически любой. > Возможность частотного среза в своей проге.
Фильтр верхних или нижних частот. Реализация - аналогично. P.S. Берешь книжку по DSP и штудируешь. http://dsp-book.narod.ru/books.html
-
мастера я тут прочитал ваше обсуждение и чет мне тоже захотелось " воткнуть в плеер эквалайзер" я как то пытался эт сделать но чет асоба не получилось читал про FFT и (мне кажеца) понял его принцип но програмно реализовать не смог этот механиз плз покажите че тм делать у меня плеер сдэлан в DirectShow прошу без критики (типа там отвали с такими просьбами) я еще чайник
-
> hahol_64_rus (13.10.07 13:00) [10]
Не поверишь, но поиск, известно где, по ключевым словам "алгоритм FFT" принесет массу полезной информации.
-
|