![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
svip |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 27.3.2007 Репутация: нет Всего: нет |
Есть сигнал 20Гц - 50 КГц
из него нужно отфильтровать полосу шириной 5 Гц (то есть 25-30Гц или 101-106Гц и тд.) Значения амплитуды сигнала лежат в массиве. Читал что нужно выполнить прямое преобразование Фурье, потом что-то как-то сделать, потом выполнить обратное преобразование фурье. Но вот что-то ничего толком непонятно. Может у кого есть пример фильтра полосового??? или кто-то может понятно "на пальцах" с примерами объяснить. Буду очень благодарен, потому что уже пропло чувство, что наконец то смогу сделать этот фильтр. |
|||
|
||||
svip |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 27.3.2007 Репутация: нет Всего: нет |
народ помогите.
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
svip, прямой фурье дает комплексный спектр. т.е. комплексные амплитуды частот. Из спектра удаляются все частоты, т.е. зануляются соответствующие элементы массивов Re и Im, потом над Re и Im массивами производиться обратное преобразование фурье, вот и вся задача. У меня есть готовое решение, но каждый раз забываю. Стукни днем в асю, напомни
![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Приатачиваю фильтр, но там не быстрый фурье, а простой при том с плавающей точкой. Так чтобы только понять принцип. Между стрелочками область которая удаляется из спектра, розовым рисуется исходный сигнал, зеленым полученный после фильртации.
Также выкладываю целочисленный БПФ на 1024 точки "Бабочка".
Если что есть и рекурсивный фильтр, он быстрее работает. Присоединённый файл ( Кол-во скачиваний: 59 ) ![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
svip |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 27.3.2007 Репутация: нет Всего: нет |
Отлично то что нужно. буду разбираться, но сразу два вопроса, что за время меряется при клике на кнопку test, и в каких частотных пределах все это работает.
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Ну там я сравнивал целочисленное фурье и с плавающей точнкой, за много итераций. Чем меньше время тем быстрее выполняется. Частота полос среза зависит от частоты выборок. Тут просто массив, если его воспроизводить с разной скоростью, то частота будет меняться. Самая крайняя комплексная амплитуда соответствует половине частоты дискретизации, крайняя слева частоте волны, которая укладывается целиком в интервал над которым производиться фурье, т.е. будет зависеть от количества точек фурье. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
svip |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 27.3.2007 Репутация: нет Всего: нет |
Тут просто массив, если его воспроизводить с разной скоростью, то частота будет меняться.
А как воспроизводить с разной скоростью?? Самая крайняя комплексная амплитуда соответствует половине частоты дискретизации, крайняя слева частоте волны, которая укладывается целиком в интервал над которым производиться фурье, т.е. будет зависеть от количества точек фурье. А тут вообще не понял. |
|||
|
||||
svip |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 27.3.2007 Репутация: нет Всего: нет |
И вот тоже не могу разобраться
40 * Sin(2 * pi / 100 * x) тут 40- амплитуда, x- время (допустим в секундах) 1/100 - частота, только вот в чем??? и как определить частоту фильтрации, получается есть использовать формулу 40 * Sin(2 * pi / 10 * x) то пик амплитуды АЧХ лежит между SpeedButton1.left=2 и SpeedButton2.left=3 каксвязать с частотой??? чтобы у АЧХ проградуировать шкалу частот. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Ну как, задать частоту выборок звуковой карте, она соответственно будет ее выдерживать. например 8000 выборок в секунду или 44100, тон будет разным. Спектр видел? Это ж массив значений. Рабочим является первая половина массива. Нулевой элемент амплитуда нулевой частоты, т.е. постоянная составляющая. Частота первого элемента спектра это величина обратная длительности всего участка (например 1024 точек) т.е. 1/T. Второго элемента 2/T, третьего 3/T т.д. В середине массива длительность 2х выборок, т.е. половина частоты дискретизации. Для 44100 это будет 22050Гц. Советую немного почитать по дискретному фурье, мож яснее станет. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |