Что такое хорошая оконная функция FFT для отклонения DC?

9

Я использую БПФ для анализа того, что по существу является огибающей мощности сигнала (см. Здесь информацию о проекте, в котором он находится), и, поскольку значения мощности всегда положительны, для исключения компонента постоянного тока я хотел бы использовать окно функция, которая является 50/50 положительной и отрицательной, по сравнению с обычной все положительной функцией.

Я взял функцию « плоской вершины », убрал a0смещение и преобразовал ее из косинусов в синусы, но я не уверен, что это оптимально (или даже имеет смысл).

Любое предложение?

Даниэль Р Хикс
источник
9
просто вычесть среднее значение перед окном?
эндолит

Ответы:

2

Первая производная от наиболее распространенных непрерывных оконных функций (фон Ханн и т. Д.) Будет отклонять DC, но все равно будет иметь частотную характеристику, аналогичную исходной оконной функции; так что вы все равно можете использовать свои исходные критерии "добродетели" для выбора окна, если оно не связано с фазой.

hotpaw2
источник
2
Хотя этот ответ в основном правильный, это скорее комментарий, поэтому его расширение было бы очень полезно.
Фонон
Тем не менее, это действительно решает мой вопрос.
Даниэль Р Хикс
1
Есть ли причина делать это вместо того, чтобы просто вычитать среднее значение перед оконным управлением?
нибот
Если ответ JasonR верен, то идея отклонения DC через оконную функцию (и при этом получить хорошую спектральную оценку) не будет работать.
нибот
@nibot: Возможная причина может заключаться в том, что вычитание суммы плюс невозможно (например, недоступно для некоторых фиксированных конвейеров оборудования или задержки).
hotpaw2
7

Если вас интересует выполнение спектрального анализа сигнала с большим компонентом постоянного тока, и вы хотите подавить этот пик постоянного тока, тогда оконная функция - это не то, что вам нужно. Как отмечалось в некоторых других ответах, высокочастотный фильтр (или, с другой стороны, узкополосный фильтр с надрезом на нулевой частоте) является подходящим решением.

Чтобы понять почему, вам нужно подумать о том, что делает применение оконной функции к частотной характеристике каждого выхода DFT. ДПФ определяется как:

X[k]=n=0N1x[n]ej2πnkN

Одно из объяснений того, как работает ДПФ, - это набор фильтров на частотах, расположенных на равных расстояниях между - f sN иfsfs2 . Пересчитайте вышеуказанную сумму следующим образом:fs2

X[k]=n=0N1xk[n]

где:

xk[n]=x[n]ej2πnkN

kx[n]2πkNxk[n]NX[k]

b[n]={1, x=0,1,,N10, otherwise

Амплитудный отклик фильтра каскадных сигналов можно найти, взяв дискретное время преобразования Фурье (DTFT) этого импульсного отклика:

|H(f)|=|sin(Nπffs)sin(πffs)|

f

x[n]

X[k]=n=0N1w[n]x[n]ej2πnkN=n=0N1w[n]xk[n]

xk[n]

|H(f)|=|W(f)|

W(f)w[n]x[n]

Так что, если вы действительно хотите отменить компонент DC сигнала, его можно удалить с помощью какой-либо другой предварительной обработки, а не оконного управления во временной области. Например, вы можете использовать линейный фильтр верхних частот с очень низкой частотой среза или сначала вычесть расчетное среднее значение из сигнала. Выбор между этими методами должен основываться на других ограничениях вашей системы.

Джейсон Р
источник
3

Я не думаю, что использование оконной функции - хороший способ удалить DC. Как упоминалось в endolith, распространенный метод состоит в том, чтобы просто вычесть среднее значение перед обработкой окна. Другим вариантом будет применение фильтра верхних частот к вашему сигналу до анализа, скажем, с частотой среза около 10 Гц.

schnarf
источник
Применение фильтра верхних частот не вариант, если сигнал не существует в аналоговой форме. Но я верю, что вы (и эндолит) правы в том, что вычитание среднего значения должно работать, особенно если также используется окно, которое сбрасывает конечные точки на ноль. (А для фильтра верхних частот потребуется более низкий уровень отсечки, учитывая, что я анализирую сигнал, возможно, до 0,01 Гц.)
Даниэль Р Хикс,
2
Как вы думаете, зачем вам нужен аналоговый сигнал для применения фильтра верхних частот? Конечно, возможно создать цифровой HPF.
Джейсон Р
@JasonR - Я признаю, что я довольно невежественен в таких вещах (мои курсы сигналов были 40 лет назад, почти до FFT и др.), Но мне кажется, что для создания цифрового фильтра верхних частот я Сначала нужно произвести преобразование Фурье сигнала.
Даниэль Р Хикс
1
Это совсем не так; Вы можете сгенерировать фильтр верхних частот так же, как и фильтр нижних частот, полосу пропускания и т. д. Фактически, есть способы взять прототип фильтра нижних частот и преобразовать его в фильтр верхних частот, который имеет аналогичный отклик. Большая часть программного обеспечения для проектирования фильтров (например, MATLAB) может использоваться для создания всех типов фильтров.
Джейсон Р
1
Я не уверен, откуда у вас сложилось впечатление, что реализация фильтра верхних частот требует дифференциации. Дифференцирование является операцией верхних частот, но не является подходящей реализацией для фильтра верхних частот (поскольку его частотная характеристика представляет собой линейное изменение, заставляющее усиливать высокие частоты там, где часто присутствует шум). Статья Википедии на ФВЧ фильтры были бы хорошим началом.
Джейсон Р