Почему мы используем окно во временной области, а не БПФ для изменения спектра, а не обратное БПФ


16

Я думал, что DSP будет сделан с использованием FFT частей сигнала, изменить выборки, которые являются результатом FFT (так как они представляют спектр нашего сигнала + шум), и удалить любые нежелательные сигналы, а затем сделать обратное FFT, чтобы получить время доменное представление отфильтрованного сигнала (шум был удален). Это, однако, не сделано, вместо этого мы делаем всю работу во временной области, используя оконные функции. Почему?

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

-> Давайте посмотрим, откуда приходит мое замешательство. Для аналоговых фильтров, например, фильтра нижних частот, у нас есть этот импульс как частотная характеристика. Когда мы фильтруем сигнал, мы эффективно умножаем спектр нашего сигнала на импульсную частотную характеристику фильтра. Это уменьшит все частоты в нашем сигнале выше уровня отсечки до 0. Так работает фильтр низких частот. Почему бы не сделать то же самое с цифровыми фильтрами?


Ответы:


7

Оконная обработка уменьшает спектральную утечку.

Скажем, вы начинаете с . Период, очевидно, . грех(Y)знак равносоз(ω0T)2π/ω0

2π/ω[0,1,8π/ω0]ωзнак равноω0

Цель управления окнами во временной области состоит в том, чтобы уменьшить все эти фиктивные спектральные компоненты.


12

Оконное управление используется, потому что вычисления DFT работают на бесконечное периодическое расширение входного сигнала. Поскольку многие фактические сигналы либо вообще не являются периодическими, либо дискретизируются в интервале, отличном от их фактического периода, это может привести к появлению ложных частотных составляющих на искусственном «краю» между повторяющимися интервалами, называемыми утечкой . Сначала умножая сигнал во временной области на оконную функцию, которая с обоих концов обнуляется, вы создаете плавный переход между повторяющимися интервалами в бесконечном периодическом расширении, тем самым уменьшая создание этих искусственных частотных компонентов, когда мы затем принимаем ДПФ.

Эта статья дает более глубокое представление об этом явлении, а также дает представление о влиянии различных оконных функций.


11

Я думаю, что вы путаете две разные операции.

Оконное управление во временной области объясняется @sam, поэтому я не буду повторять это. Но управление окнами не выполняется для выполнения фильтрации. Фильтрация путем умножения БПФ сигнала на частотную характеристику фильтра вполне разумна во многих ситуациях и действительно выполняется. Альтернативой для фильтрации является свертка во временной области (которая отличается от оконного управления). Это имеет свои преимущества, такие как работа с сигналом в режиме реального времени, так как он измеряется, не дожидаясь, пока вся вещь будет сохранена, а затем преобразована.

Итак, на ваш вопрос «Почему бы не сделать то же самое с цифровыми фильтрами?», Ответ просто «мы делаем, когда это подходит».


У меня также сложилось впечатление, что свертка и оконное управление смешались в этом вопросе. Хорошо, что вы указали это!
Див

11

На этот вопрос было несколько хороших ответов. Тем не менее, я чувствую, что один важный момент не был полностью прояснен. Одна часть вопроса заключалась в том, почему мы не просто умножаем БПФ сигнала на желаемый отклик фильтра. Например, если мы хотим отфильтровать наш сигнал нижних частот, мы могли бы просто обнулить все частотные компоненты выше, чем требуемая частота среза. На самом деле это простое применение хорошо известного метода частотной выборки для создания КИХ-фильтров. Проблема в том, что мы можем просто обнулить дискретные частотные компоненты, вычисленные БПФ. Мы не контролируем, что происходит между этими дискретными частотами. Оказывается, что такая простая версия фильтрации будет давать только слабое затухание в полосе задержания (независимо от длины БПФ). Если у вас есть доступ к Matlab или октаве, это '

x=2*rand(1024,1)-1;
X=fft(x);
Y=X.*[ones(200,1);zeros(625,1);ones(199,1)]; % lowpass filter
y=real(ifft(Y)); % real() just to remove numerical errors
Y=fft(y,4096);
plot(20*log10(abs(Y(1:2048)))),axis([0,2048,-30,50])

6

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

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

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


5

Окно во временной области, потому что

  • мы можем гарантировать ноль по краям окна
  • оконные функции имеют хорошее аналитическое выражение в пространственной области
  • многие оконные функции имеют странный спектр, который трудно аппроксимировать
  • требуется только конечное число выборок (управление окнами может быть выполнено в виде потоков сигналов)

например из википедии

введите описание изображения здесь

Жесткое обрезание при переходе к нулю оконных функций означает, что в спектральной области они имеют боковые лепестки, которые очень медленно уходят в ноль. Если мы избавимся от этого ограничения, у нас могут быть функции, которые являются компактными как в пространственной, так и в спектральной областях, например, фильтр Гаусса. Это означает, что вы можете фильтровать через спектральную область, но для этого требуется знать весь сигнал.

Если у вас уже есть весь сигнал, другой альтернативой будет использование вейвлетов.


2

У меня такой же вопрос.

Свертка - это интегральная / кумулятивная сумма сигнала во временной области, умноженная на окно. Это не следует путать с «оконным» сигналом временной области.

Конец этой статьи мне очень помог.

В основном это говорит о том, что реальные сигналы конечны, и резкое отключение реального сигнала приводит к множеству нежелательных частот / артефактов в частотной области.

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

Гладкий отрезанный

Оконный образец выше будет иметь меньше артефактов в частотной области, чем необработанный образец ниже.

Резкий обрез


1

Существует две широкие категории, связанные с БПФ, и они: 1) эффективный способ реализации КИХ-фильтра и 2) спектральный анализ.

Для FIR-фильтрации не нужно беспокоиться об окнах и не использовать их, если только окно не соответствует фильтру, но это не обычное дело. Утечка не является проблемой.

Спектральный анализ - это место, где используются окна. Здесь вы смотрите на датчик, подключенный к большой промышленной машине, и пытаетесь выяснить, не находится ли глубоко в его недрах подшипник. Подшипники визжат, когда они выходят из строя, но шум, который они могут, обычно намного ниже, чем другие звуки, издаваемые машиной. Вот тут-то и появляются утечки и усреднения. Учитывая сильные тона, утечка затмит слабый сигнал, который мы ищем на несколько ячеек. Улучшает чувствительность спектрального анализа к слабым сигналам при наличии сильных сигналов. Аналогичный эффект наблюдается при наклоне фонового шума. Информация, которую мы ищем, находится в частотной области. Это та же проблема и в РАДАР, и в СОНАР, и в геофизике. Увидеть слабый сигнал - это цель.


1

Оконное управление во временной области необходимо для того, чтобы избежать распространения одной частоты, которая не находится точно в частотном интервале, по всему спектру. Может быть, эта страница помогает: http://www.sm5bsz.com/slfft/slfft.htm Линрад (мой 20-летний проект) использует оконное БПФ, затем применяет фильтр в частотной области (обнуляет то, что нам не нужно.) Примените окно - не переходите резко от веса 1 к весу 0 на частотных бинах. Затем примените обратное БПФ - но теперь на гораздо меньшее количество очков. Нет необходимости включать все частотные интервалы, которые, как мы знаем, равны нулю !! В результате мы получаем функцию времени с гораздо меньшими размерами, то есть с гораздо более низкой частотой дискретизации. Процедура выполняет фильтрацию и прореживание за один шаг. Это очень эффективно, если вы хотите отфильтровать несколько каналов одновременно. Домашняя страница Линрада находится здесь: http://www.sm5bsz.com/linuxdsp/linrad.htm

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.