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

Ivan Karamazov
Сообщения: 89
Зарегистрирован: 28 окт 2010, 22:31
Откуда: Москва

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

Сообщение Ivan Karamazov »

Тема ДПФ-фильтрации обширная и до конца (как я это представляю), не всеми (в первую очередь -- мною) понятая. Тем не менее, попробую начать.
Бахурин Сергей::
Возьмите функцию Хевисайда и попробуйте к ней применить fft фильтрацию и вы увидите что результат вас не вдохновит.
Ф-я Хевисайда, по слабому моему разумению, неоднократно известный начинающим изучать теоретическую электротехнику "единичный скачек" -- не убьете, если скажете, что я что-то путаю. Чтобы сделать из него "полное" (или, если угодно, "тупое") ДПФ, его, естественным образом, надо как-то ограничить во времени -- причем, с обеих сторон (т.е. не только на +inf, но и до собственно скачка).
Т.е. чтобы результат "не вдохновил" -- надо бы (мне) для начала понять, как представить "кусочно-постоянную" ф-ю Хевисайда на ограниченном во времени (если угодно -- по числу отсчетов) отрезке.
Если ваши решения вам нравятся -- это хорошие решения. И наоборот.

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

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

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

а в чем проблема? можно взять 512 точек скажем 256 первых точек нули остальные 256 единицы. И фильтруйте обнулением fft. В момент скачка увидите очень длинный переходной процесс, на который вы никак не сможете повлиять.

Ivan Karamazov
Сообщения: 89
Зарегистрирован: 28 окт 2010, 22:31
Откуда: Москва

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

Сообщение Ivan Karamazov »

Проблема, разумеется, не в этом. Просто вроде как на ровном месте запутался, и хочется разобраться "по слогам".
Действительно, выполняя ДПФ-фильтрацию наложением на спектр ф-и Хевисайда (для начала -- одной, т.е. пусть это будет "ФВЧ") я тем самым выполняю как бы циклическую свертку во времени исходного сигнала и вот этого [очень малоприятного] переходного процесса. Поскольку свертка циклическая, то с точки зрения результата произойдет наложение заметных хвостов. Или должно произойти. О чем собственно, кажется и писал мне в свое время petrov. (1)
Это с одной стороны. (Или не так??)
С другой же -- не делаю я никакой свертки! Я делаю пару преобразований, по дороге выкидывая не нужные мне частотные компоненты :? . (2)
Скорее всего верен тезис (1), но есть много но. Для начала две шт.:
- Возвращаясь к преобразованию Гильберта http://www.dsplib.ru/content/hilbert/hilbert.html, ф-ла (19) -- это разве не то же самое?
- У меня было достаточно много поводов, чтобы убедиться, что ДПФ-фильтрация (достаточно широкополосная, т.е. ПФ с полосой не уже [0.01..0.49] -- это очень удобно) не привносит никаких таких артефактов; а если и привносит -- на уровне или ниже шумов квантования 16-18-битного исходного сигнала.
К сожалению, на (n+1)-м образце начались проблемы. Посему и начал тему. (Т.е. мне очень хотелось бы обвинить конкретный "исходный сигнал", но я на данный момент уверен только в том, что запутался.)
Т.е. рассуждения про "наложения хвостов" -- они корректны? Если можно -- поправьте.
Если ваши решения вам нравятся -- это хорошие решения. И наоборот.

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

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

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

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

что касается преобразования Гильберта это тоже фильтр в частотной области, только комплекснозначный. И ему тоже свойственны эффекты как и любому другому фильтру построенному на обнулении части спектра. Вы кстати можете их увидеть, если после преобразования гильберата на основе fft добавите нулей к реальной и мнимой частям аналитического сигнала и посмотрите спектр то увидите примерно следующее:
Гильберт.png
Гильберт.png (16.3 КБ) 11039 просмотров

Ivan Karamazov
Сообщения: 89
Зарегистрирован: 28 окт 2010, 22:31
Откуда: Москва

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

Сообщение Ivan Karamazov »

Тогда попробуем с конца.
Вы кстати можете их увидеть, если после преобразования гильберата на основе fft добавите нулей к реальной и мнимой частям аналитического сигнала и посмотрите спектр то увидите примерно следующее:
Увидел. В полном объеме. И даже заметил, что при добивании сигнала в N отсчетов N нулями, в области отрицательных частот вылезает строго каждая 2-я палка.

Суть же феномена мне *не ясна* -- вроде бы (???) комплексный сигнал для этого примера может быть получен любым ("достаточно хорошим" в смысле подавления отр. частот) способом. (просьба поправить.) Соответственно, феномен должен лежать в ДПФ (???), при помощи которого мы смотрим на спектр дополненного нулями сигнала. (Ну, действительно, с точки зрения качества переноса спектра или управления фазой, т.е. поотсчетного умножения на мнимую экспоненту, исходный сигнал не изменился, а нули -- они и есть нули.)
Если ваши решения вам нравятся -- это хорошие решения. И наоборот.

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

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

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

потому что дпф фильтрация соответсвует ких фильтру во временной области. Импульсная характеристика этого фильтра есть усеченный sinc . Усеченный синк дает эффект Гиббса который вы видите. Поскольку ДПФ дискретизирует частоту, то вы без добавления нулей дискретизируете в нулях спектра усеченного sinc а когда добавляете нулей - видите эффект Гиббса. Для уменьшения Гиббса используют весовые окна, но при дпф фильтрации это не возможно, поэтому дпф фильтрацию редко используют.

Ivan Karamazov
Сообщения: 89
Зарегистрирован: 28 окт 2010, 22:31
Откуда: Москва

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

Сообщение Ivan Karamazov »

Есть над чем подумать. Последнее на данный момент крупное непонимание:
Импульсная характеристика этого фильтра есть усеченный sinc
Почему, собственно, усеченный?? (Всю дорогу я [не всегда явно] считал его "абстрактно-бесконечным".) Т.е. кажется, если я это пойму, то пойму и все остальное (по теме, по кр. мере).
Да, если КИХ [без окна] -- то это он и есть. (Кстати, как ранее говорилось, только если длина фильтра меньше числа отсчетов * 2. Если не так -- то КИХ фильт д.б. идеальным. Кстати, в рамках разборок по теме я состроил КИХ фильтр Гильберта > N*2 отсчетов, и получил по морде -- во всяком случае, в смысле подавления отрицательных частот сравнительно с ДПФ, особенно по краям этих самых отрицательных частот. Фильтр был, для такого случая, без окна. Т.е. этот "результат" вполне предварительный в силу возможных алгоритмических ошибок навороченного за год+ вычисления свертки -- т.е. возможного неявного предположения, что число отсчетов не м.б. < порядка КИХ фильтра.)
Если ваши решения вам нравятся -- это хорошие решения. И наоборот.

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

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

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

Давайте рассуждать.
У вас есть N отсчетов исходного сигнала. Вы берете КИХ фильтр с импульсной характеристикой (ИХ) длиной K отсчетов. Линейная свертка вашего сигнала и ИХ ких фильтра дает на выходе N+K-1 отсчет. Если K = 2N то для дпф фильтрации надо добить сигнал нулями до 2N отсчетов. При этом круговая свертка на выходе дпф фильтрации будет соответствовать линейной свертке. При этом фильтр все равно будет усечен, так как его ИХ не бесконечна, а содержит 2N отсчетов. На выходе дпф-фильтра не будет полного подавления сигнала в полосе заграждения сигнал то конечен во времени, соотвественно спектр его бесконечен с боковыми лепестками и прочими пирогами. Что вы и видите когда искусственно увеличиваете длину сигнала добивая его нулями, хотя если сигнал нулями не добивать, то будет казаться что имеем идеальное подавление, но только потому что спектр считается на сетке частот соответствующим нулям АЧХ усеченного фильтра.

Ivan Karamazov
Сообщения: 89
Зарегистрирован: 28 окт 2010, 22:31
Откуда: Москва

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

Сообщение Ivan Karamazov »

Дошло, кажется, все. По крайней мере, в рамках топика. Спасибо огромное!!
Если ваши решения вам нравятся -- это хорошие решения. И наоборот.

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

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

Сообщение Pavia »

Целиком не читал.

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

Линейная свертка вашего сигнала и ИХ ких фильтра дает на выходе N+K-1 отсчет.
Если говорить про многочлены, то верно. А по поводу сигнала нам известно только N отсчётов.
0, 1 ... N-2, N-1
и совершенно не известно чему равно ...-3,-2,-1 и N, N+1, N+2...
Поэтому на выходе мы имеем только N-K правильных отсчётов. А остальное это вопрос и единого правила тут нет.
Если мы сигнал обрабатываем окнами то берем эти результаты из соседних окон.
Если мы делаем произведение многочленов то тут берем 0.
В ряде задач надо чтобы производная была 0 (заполняем путем копирования граничного отсчёта).
Если мы обрабатываем радио сигнал, а там сигнал(генерируется) специально периодическим, то тут брать 0 нельзя, надо как-то его приблизить к исходному периодическому.

Усеченный синк дает эффект Гиббса который вы видите.
Число гармоник не влияет на эффект Гиббса. страница 28 в книге А.Б. Сергиенкова Цифровая обработка сигналов.
Последний раз редактировалось Pavia 30 апр 2011, 12:01, всего редактировалось 1 раз.

Ответить