![]() |
|
![]() ![]() ![]() |
|
Dimmak |
|
||||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 2.12.2012 Репутация: нет Всего: нет |
Хорошо. В данном случае под фильтрацией я подразумевал простое изменение амплитуд ( magnitude ) сигнала, полученных с помощью БПФ.
Отфильтрованный сигнал... |
||||
|
|||||
vedun |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 23.12.2010 Репутация: 2 Всего: 2 |
С помощью простого выкидывания отсчётов результата БПФ, с последующим ОБПФ вы фильтр не получите, как бы заманчиво это не выглядело. Отсюда и проблемы на стыках при восстановлении сигнала после БПФ. Я бы вам рекомендовал вначале сделать фильтр без БПФ.
|
|||
|
||||
Dimmak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 2.12.2012 Репутация: нет Всего: нет |
vedun
Насколько я понимаю, именно изменение величин ( magnitude ) является обычным FFT фильтром. Само собой, FFT фильтр и FIR фильтр немного разные темы..
Спасибо за рекомендацию, но я хотел бы все-таки сначала разобраться с оконным перекрытием. ![]() |
|||
|
||||
vedun |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 23.12.2010 Репутация: 2 Всего: 2 |
|
||||
|
|||||
Dimmak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 2.12.2012 Репутация: нет Всего: нет |
Я понял в чем вопрос.
1. Делаем FFT получаем 2массива ( real & imag ) 2. Далее высчитывает по формулам величины частот( громкость гармоник( magnitude )) и фазу каждой из частот. Те если у нас, к примеру 1024 отчета, следовательно получаем 512 частот, равномерно расположенных друг от друга. Если взять SR 44100, то шаг будет составлять ~86гц. Понятное дело, что погрешность при таких расчетах просто опупительная, для чего и забивают массив нулями или увеличивают количество отчетов ( да или то и другое ). Можно к примеру понизить SR в 2, 4... раза. Вариаций много, но это уже детали. 3. Далее конвертируем массив отредактированных величин частот ( их у нас 512, в данном примере ) и массив фаз ( Magnitude, Phase ) в ( real & imag ) и только после этого делаем iFFT. Это и является обычным FFT фильтром, в моем понимании. ![]() |
|||
|
||||
vedun |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 23.12.2010 Репутация: 2 Всего: 2 |
Понятно. Я бы не стал называть это фильтром, в моём понимании это игра в напёрстки с сигналом с неизвестным результатом
![]() Добавлено: Хотя можно поступить так: сдвигать каждый раз окно на один отсчёт, тогда после прямого фурье можно крутить амплитуду и фазу каждой частоты как вам нужно. В итоге это будет эквивалентно банку фильтров с sinc огибающей на каждой частоте. Это сообщение отредактировал(а) vedun - 28.12.2012, 17:52 |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
![]() |
|||
|
||||
Dimmak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 2.12.2012 Репутация: нет Всего: нет |
ОК! Давайте пробежимся по FFT базе знаний. Что именно в корне не верно? ![]() |
|||
|
||||
Dimmak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 2.12.2012 Репутация: нет Всего: нет |
Не совсем понимаю что это дает. Пожалуйста, подробности по этому моменту. А вот по-поводу фазы, чтоб ее крутить, нужно чтоб сетка FFT довольно точно совпала с модифицируемой частотой ( 2 - 3 знака после запятой ) |
|||
|
||||
vedun |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 23.12.2010 Репутация: 2 Всего: 2 |
![]() |
||||
|
|||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Давай дай определение преобразование Фурье. И опиши переход к дискретному Фурье. Рассмотри переход от Дискретного случая с N к M отчётов. В качестве вопроса что дает добавления нулей? Подсказка переход от свёртки по модулю к линейной. В качестве пособия могу посоветовать "А.Б.Сергиенко_Цифровая обработка сигналов" Что будет если добавить нули? А ни чего хорошего тут результат показан http://websound.ru/articles/theory/filter.htm правда однобоко. |
|||
|
||||
Dimmak |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 2.12.2012 Репутация: нет Всего: нет |
vedun
Ясно.
В таком случае погрешность фазы до 2х градусов. Pavia
Нули добавляются для уменьшения шага сетки. Ели Вы о том, что сигнал с нулями невозможно обратно преобразовать, так ведь можно еще рассматрива оБПФ как гармонический синтезатор. Только в этом случае точность определения гармоник и фаз должна быть довольно высокой. vedun, Pavia Кроме Сергиенко вам известны книги, из которых можно подчерпнуть информацию об использовании оконных функций с FFT? |
||||||
|
|||||||
vedun |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 23.12.2010 Репутация: 2 Всего: 2 |
||||
|
||||
Dimmak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 2.12.2012 Репутация: нет Всего: нет |
Спасибо vedun
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |