Конференция "Media" » Как программно выделить определённую частоту? [D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]
 
  • Xdebugger © (25.09.07 19:30) [0]
    Как программно выделить определённую частоту(звука)?
    И отфильтровать её.
  • Efir © (26.09.07 00:07) [1]
    FFT?
  • pavia © (26.09.07 07:36) [2]
    Можно и без FFT.
  • Jeer © (26.09.07 10:11) [3]

    > pavia ©   (26.09.07 07:36) [2]


    Можно и без того, о чем Вы подумали:)
  • Efir © (26.09.07 20:18) [4]

    > Jeer ©   (26.09.07 10:11) [3]


    А о чём он подумал?
  • Pavia © (26.09.07 20:41) [5]
    Делается это так, берем пробразование Фурье. Прогоняем не для всех частот, а только для одной- нужной.
    После получив ее амплитуду и фазу. Можно отфильтровывать. Отфильтровывание идет путем вычитания из амплетуды нашу волну.  

    Можно, через БПФ. Делаем быстрое преобразование Фурье. В полученном спекторе занижаем нужную нам частоту. И делаем обратное преобразование фурье.

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

    Есть еще способ. Но его я расказывать не буду, пусть Jeer рассказывает раз он знает о чем я подумал.
  • Jeer © (27.09.07 10:08) [6]

    > Xdebugger ©   (25.09.07 19:30)


    Для начала вернемся к вопросу автора.
    "Программно выделить определенную частоту"

    В вопросе неоднозначность, а именно:
    1. Определить наличие некоторой частоты в сигнале (например, в системах тонального кодирования, DTFM и пр).
    2. В сигнале с широким спектром определить уровень сигнала искомой частоты.
    3. Если "частота выделена", то говорить о ее фильтрации уже бессмысленно - она и так синус или косинус, как нравится.

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

    1.Если вопрос относится к первому типу:
    - можно использовать разновидность прямого преобразования Фурье - алгоритм Герцеля (Hoertzel).
    Алгоритмически и по затратам намного эффективнее как классического ПФ, так и БПФ.
    - вторым подходом может являться нерекурсивная цифровая фильтрация на . основе гребенчатого фильтра.
    Целесообразность использования определяется степенью разрешения по частоте.

    2. Если вопрос относится ко второму типу:
    - уже упомянутое прямое преобразование Фурье (ПФ или БПФ - не суть) + методы устранения явлений Гиббса (windowing - "окнование")
    - классические фильтры (рекурсивные или нерекурсивные) полосно-пропускающего типа.
    - вейвлет-преобразование, позволяющее выявить "структуру" сигнала, а также ответить на вопрос о спектральной плотности мощности сигнала в заданной тонкой структуре, т.е. полосе частот.

    P.S.
    Важным фактором, часто определяющим единственно подходящий вариант "детектирования", является необходимость on-line или возможность off-line обработки.
    Пока нет ответа на этот вопрос, можно только теоретизировать.
  • DeBUGger13 © (08.10.07 14:44) [7]
    Спасибо всем за инфу!
    //Hfpldjtybt kbxyjcnb
    Вообщем, дело в том, что мне надо сделать:
    1.Off-line фильтр частот(Можно задать определённый диапазон частот и отфильтровать их).
    2.Возможность частотного среза в своей проге.

    Если кто знает, где можно найти подробную инфирмацию, пожалуйста,
    Киньте ссылку.
  • Сергей М. © (08.10.07 16:56) [8]

    > Вообщем, дело в том, что мне надо сделать


    Делай.
    Мы не возражаем.

    Ты вообще-то в [6] вник ?
    Или там буквы для тебя незнакомые сплошь и рядом ?)
  • Jeer © (08.10.07 17:09) [9]

    > DeBUGger13 ©   (08.10.07 14:44) [7]



    > задать определённый диапазон частот и отфильтровать их


    Полосовой фильтр (пропускающий или заграждающий/режекторный).
    Способ реализации зависит от требований, но если off-line - можно практически любой.


    > Возможность частотного среза в своей проге.


    Фильтр верхних или нижних частот. Реализация - аналогично.

    P.S.
    Берешь книжку по DSP и штудируешь.
    http://dsp-book.narod.ru/books.html
  • hahol_64_rus (13.10.07 13:00) [10]
    мастера я тут прочитал ваше обсуждение
    и чет мне тоже захотелось " воткнуть в плеер эквалайзер"
    я как то пытался эт сделать но чет асоба не получилось
    читал про FFT и (мне кажеца) понял его принцип
    но програмно реализовать не смог этот механиз
    плз покажите че тм делать
    у меня плеер сдэлан в DirectShow
    прошу без критики (типа там отвали с такими просьбами) я еще чайник
  • Jeer © (15.10.07 09:35) [11]

    > hahol_64_rus   (13.10.07 13:00) [10]


    Не поверишь, но поиск, известно где, по ключевым словам "алгоритм FFT" принесет массу полезной информации.
  • Сергей М. © (15.10.07 12:19) [12]

    > я еще чайник


    http://www.mitov.com/index.html
 
Конференция "Media" » Как программно выделить определённую частоту? [D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]