Первый вопрос большинства людей: зачем нам предварительная обработка в дискретном преобразовании Фурье (ДПФ) или быстром преобразовании Фурье (БПФ)? Прежде чем ответить на вопрос, вы должны знать разницу между ДПФ и БПФ. Я уже обсуждал эту тему здесь раньше, вы можете проверить, хотите ли вы узнать больше о разнице. Дело в том, что БПФ - это быстрый способ выполнения ДПФ.

Ответ - спектральная утечка. Что такое спектральная утечка? Спектральная утечка - это когда вы передаете "незавершенную" волну в БПФ. Что я имею в виду, когда говорю, что незавершенная волна - это волна, которая имеет нецелочисленный период, когда она переходит к БПФ следующим образом.

Когда вы передаете этот сигнал в БПФ, результат будет таким

Вау, мощность очень высокая, особенно в диапазоне 4 Гц. Это очевидно, потому что мы передаем в БПФ чистую синусоидальную волну 4 Гц. Но похоже, что БПФ «думает», что наш чистый сигнал представляет собой суперпозицию волны около 4 Гц.

Результат будет другим, если вы передадите в ДПФ сигнал «завершено». Эта "полная" синусоида 4 Гц

при передаче его в БПФ результат будет таким

Это ожидаемый результат! Наш входной сигнал представляет собой синусоидальную волну 4 Гц, поэтому частота, имеющая мощность на графике спектра DFT, составляет всего 4 Гц. И показанная мощность не так уж велика, как раньше. Поскольку код python очень чувствителен к пробелам и табуляциям, я просто дам вам здесь ссылку на код на GitHub вместо того, чтобы показывать ее здесь, потому что все пространство и табуляции будут перепутаны, если я предоставлю их здесь.

Это явление называется спектральной утечкой. Это связано с тем, что DFT предполагает, что наш входной сигнал является сигналом "полного" периода. DFT предполагает, что наш сигнал повторяется точно так же, как входной. Итак, когда мы передали «неполную» версию синусоидальной волны 4 Гц, DFT увидит ее так.

Давайте проверим результат БПФ этого сигнала, вот результат

Это похоже на вывод БПФ незавершенной синусоидальной волны 4 Гц до того, как не так? Да, кроме в этой расширенной версии, увеличение мощности выше (посмотрите на шкалу оси Y). Код для построения графиков, подобных приведенным выше, находится по этой ссылке.

Чтобы убрать шум и получить идеальный выходной сигнал (см. График «БПФ синусоидальной волны 4 Гц»), мы должны знать период сигнала и обрезать его в нужное время (обрезать точно на конец периода сигнала). Но, в реальном мире мы не знаем о периоде сигнала, а также реальный сигнал полон шумов и помех, поэтому обрезать его в нужное время невозможно. Решением является оконная функция.

Оконная функция в преобразовании Фурье - это аналогичная попытка настроить начало и конец наших сигналов на БПФ. В этой истории мы рассмотрим 2 оконные функции, функцию Хеннинга и функцию Хэмминга.

Функция Хеннинга записывается так

И функция Хэмминга это

Где M - количество данных во вводе набора данных БПФ, а n - число от 0 до M-1.

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

Вот ссылка на код для создания сюжета выше.

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

Давайте перейдем к БПФ, и мы получим такие графики.

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

Один важный момент: вы можете видеть, что с обработкой оконной функцией или без нее, наиболее доминирующая частота на графике БПФ всегда одна и та же, 4 Гц. Итак, если вы просто хотите знать, какая частота в вашем сигнале является доминирующей, я думаю, вам не нужна оконная функция. Если вы хотите найти более 1 доминирующего сигнала в своем наборе данных, я думаю, что эта функция окна будет огромным подспорьем, поскольку при утечке мощность некоторых полос вокруг доминирующего сигнала может затмевать второй, третий или т. Д. Сигнал вам. хочу найти. И, конечно же, вам понадобится оконная функция, если вы хотите сгладить результат БПФ.

использованная литература:

Https://www.crystalinstruments.com/dynamic-signal-analysis-basics, по состоянию на 29 сентября 2019 г.