ДПФ-фильтрация

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: ДПФ-фильтрация

Сообщение Бахурин Сергей »

Pavia писал(а):Целиком не читал.

БПФ ровно как и ДПФ работает с периодической функцией. На вход БПФ подается один период функции. А при изменение числа отсчётов путем добавления нулей мы изменяем функцию. :!: Тем самым она не соответствует исходной. Поэтому на БПФ мы и видим искажения сами испортили и видим что испортили. И не надо винить в этом БПФ.
добавление нулей не искажает сигнал, и соответственно спектр тоже никак не искажается.
Добавление нулей позволяет интерполировать спектр. Любая дискретная функция имеет непрерывный периодический спектр. Использование дпф возвращает дискретные значения спектра на заданной сетке частот. Добавление нулей к сигналу позволяет интерполировать спектр, приближаясь к непрерывному и показывает как ведет себя непрерывный спектр вашего дискретного сигнала между отсчетами дискретизации дпф. Мы ничего не портим а наоборот можем увидеть боковые лепестки которые есть в реальности, но не видны на выходе дпф.

Pavia
Сообщения: 38
Зарегистрирован: 25 апр 2011, 18:45

Re: ДПФ-фильтрация

Сообщение Pavia »

Тогда вопрос снимается интерполяция это приближение. А приближать я могу как мне нравится. Если я захочу то я смогу сделать интерполяцию именно гладкой.

Predlegion
Сообщения: 34
Зарегистрирован: 15 апр 2011, 18:02

Re: ДПФ-фильтрация

Сообщение Predlegion »

В статье Линейная и циклическая свертка на рис.5 " Вычисление циклической свертки с применением БПФ " показано,что последовательности БПФ a и b имеют одинаковую длину N.

Как быть если последовательности имею разную длину? Например при фильтрации, размер преобразования Фурье для сигнала- 2048, а размер преобразования Фурье КИХ фильтра- 512. Как можно умножить поэлементно эти два массива,чтобы получить отфильтрованый сигнал? Нужно к последующим 512 отсчетам также применять ту же "маску" фильтра?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: ДПФ-фильтрация

Сообщение Бахурин Сергей »

различают циклическую и линейную свертку. Линейная свертка может быть выполнена через циклическую если добить последовательности нулями (к тому который 2048 нужно добавить 512 нулей а к массиву который длиной 512 надо добавить 2048 нулей) т.е. сделать их равной длины и дальше фильтровать при помощи дпф

Predlegion
Сообщения: 34
Зарегистрирован: 15 апр 2011, 18:02

Re: ДПФ-фильтрация

Сообщение Predlegion »

Скажите пожалуйста,операция фильтрации, это ведь всегда линейная свертка?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: ДПФ-фильтрация

Сообщение Бахурин Сергей »

Predlegion писал(а):Скажите пожалуйста,операция фильтрации, это ведь всегда линейная свертка?
Да но есть нюанс когда БИХ фильтр или бесконечный во времени сигнал на входе, то придется что-то ограничивать.

Predlegion
Сообщения: 34
Зарегистрирован: 15 апр 2011, 18:02

Re: ДПФ-фильтрация

Сообщение Predlegion »

Еще такой момент.

Пусть входной сигнал 2048 отсчетов.Пусть размер фильтра 512 отсчетов.
Тогда размер сигнала после фильтрации(линейной свертки),если не ошибаюсь 2048+512=2560 отсчетов

Получается,что входной сигнал 2048 ,а выходной 2560 .

Вопрос,откуда взялись еще (2560-2048)=512 отсчетов в выходном сигнале?
В них содержится мусор,который можно отбросить?
Или это как-то связано с задержкой КИХ-фильтра, но пока точно не могу понять каким образом

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: ДПФ-фильтрация

Сообщение Бахурин Сергей »

Чтобы понять откуда взялось еще 511 отсчетов посмотрите рисунки 1 и 2 статьи про свертку. На рисунке 2 показан пример свертки массива 4 отсчета и импульсной характеристики в 3 отсчета. На выходе получилось 6 отсчетов. В вашем случае при фильтрации сигнала 2048 отсчетов фильтром 512 получите на выходе линейной свертки 2048+512-1 = 2599 отсчетов. Вы можете без зазрения совести отбросить последние 511 и получите результат фильтрации вашего сигнала (такой результат возвращают функции filter в матлабе например). Но есть нюанс. Дело в том что ваш фильтр имеет групповую задержку. Это означает, что после фильтрации сигнал будет сдвинут по времени относительно исходного. Вы можете из результата свертки 2599 отсчетов выбрать 2048 отсчетов но не отбрасыванием последний 511, а выбрать начиная с 128 до 2599-127, тогда ваш сигнал на выходе фильтра не будет сдвинут относительно исходного поскольку вы учли групповую задержку.

Predlegion
Сообщения: 34
Зарегистрирован: 15 апр 2011, 18:02

Re: ДПФ-фильтрация

Сообщение Predlegion »

Спасибо! Но нужно будет это все еще дополнительно переварить.
выбрать начиная с 128 до 2599-127
а вы не опечатались здесь? не с 256 до 2599-256 ?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: ДПФ-фильтрация

Сообщение Бахурин Сергей »

Predlegion писал(а):а вы не опечатались здесь? не с 256 до 2599-256 ?
опечатался конечно

Ответить