Чтобы понять оконные функции и их использование, давайте сначала посмотрим, что происходит, когда вы берете ДПФ образцов конечной длины. В определении дискретного преобразования Фурье подразумевается, что конечная длина сигнала, который вы рассматриваете, является периодической.
Рассмотрим синусоидальную волну, отобранную таким образом, чтобы охватить полный период. Когда сигнал реплицируется, вы можете видеть, что он периодически продолжается как непрерывный сигнал. Результирующее ДПФ имеет только один ненулевой компонент, который находится на частоте синусоиды.
Теперь рассмотрим волну косинуса с другим периодом, отобранным так, что захватывается только частичный период. Теперь, если вы реплицируете сигнал, вы видите разрывы в сигнале, отмеченные красным. Плавного перехода больше нет, поэтому утечка будет происходить на других частотах, как показано ниже
Эта спектральная утечка происходит через боковые лепестки. Чтобы понять больше об этом, вы также должны прочитать о функции sinc и ее преобразовании Фурье, функции прямоугольника . Конечная последовательность отсчетов может рассматриваться как бесконечная последовательность, умноженная на прямоугольную функцию. Происходящая утечка связана с боковыми лепестками функции sinc (sinc и прямоугольник принадлежат к самодвойственному пространству и являются F.Ts друг друга). Это объясняется более подробно в статье о спектральных утечках, на которую я ссылался выше.
Оконные функции
Оконные функции используются при обработке сигналов, чтобы минимизировать влияние спектральных утечек. По сути, функция окна заключается в том, что она сужает последовательность конечной длины на концах, так что при построении мозаики она имеет периодическую структуру без разрывов и, следовательно, меньшую спектральную утечку.
Некоторые из распространенных окон - это Хеннинг, Хэмминг, Блэкман, Блэкман-Харрис, Кайзер-Бессель и т. Д. Более подробную информацию о них вы можете получить по вики-ссылке, а соответствующие команды MATLAB: hann
, hamming
, blackman
, blackmanharris
и kaiser
. Вот небольшой пример различных окон:
Вы можете удивиться, почему существует так много разных оконных функций. Причина в том, что каждый из них имеет очень разные спектральные свойства и имеет разную ширину основного лепестка и амплитуды боковых лепестков. Бесплатного обеда не бывает: если вам нужно хорошее разрешение по частоте (основной лепесток тонкий), боковые лепестки становятся больше и наоборот. Вы не можете иметь оба. Часто выбор оконной функции зависит от конкретных потребностей и всегда сводится к компромиссу. Это - очень хорошая статья, в которой говорится об использовании оконных функций, и вы обязательно должны ее прочитать.
Теперь, когда вы используете оконную функцию, у вас меньше информации на конусных концах. Таким образом, один из способов исправить это - использовать раздвижные окна с перекрытием, как показано ниже. Идея состоит в том, что при объединении они максимально приближают исходную последовательность (т. Е. Нижний ряд должен быть как можно ближе к плоскому значению 1). Типичные значения варьируются от 33% до 50%, в зависимости от применения.
Использование спектрограммы MATLAB
Синтаксис spectrogram(x,window,overlap,NFFT,fs)
где
x
- это весь ваш вектор данных
window
- ваша оконная функция. Если вы введете только число, скажем, W
(должно быть целым числом), то MATLAB разбивает ваши данные на куски по W
выборок каждый и формирует из них спектрограмму. Это эквивалентно использованию прямоугольного окна длиной W
сэмплов. Если вы хотите использовать другое окно, укажите hann(W)
или другое выбранное вами окно.
overlap
- количество сэмплов, которые вам нужно перекрывать. Таким образом, если вам нужно перекрытие 50%, это значение должно быть W/2
. Используйте floor(W/2)
или ceil(W/2)
, если W
может принимать нечетные значения. Это просто целое число.
NFFT
- длина БПФ fs
- частота дискретизации вашего вектора данных. Вы можете оставить это поле пустым, и MATLAB отобразит фигуру с точки зрения нормализованных частот и оси времени как просто индекс фрагмента данных. Если вы введете его, MATLAB соответственно изменит масштаб оси.
Вы также можете получить дополнительные выходные данные, такие как вектор времени и вектор частоты, а также рассчитанный спектр мощности, для использования в других вычислениях или если вам нужно по-другому оформить свой график. Обратитесь к документации для получения дополнительной информации.
Вот пример с 1 секундой линейного ЛЧМ-сигнала от 20 Гц до 400 Гц с частотой дискретизации 1000 Гц. Используются две оконные функции, Hanning
и Blackman-Harris
, с перекрытиями и без них. Длина окна составляла 50 образцов и перекрывалась на 50% при использовании. Графики масштабируются до одинакового диапазона 80 дБ на каждом графике.
Вы можете заметить разницу в цифрах (сверху вниз) из-за перекрытия. Вы получите более точную оценку, если используете перекрытие. Вы также можете наблюдать компромисс между шириной основного лепестка и амплитудой бокового лепестка, который я упоминал ранее. Хеннинг имеет более тонкий основной лепесток (выпуклая линия по диагонали перекоса), что приводит к лучшему разрешению по частоте, но имеет негерметичные боковые лепестки, видимые яркими цветами снаружи. Blackwell-Harris, с другой стороны, имеет более толстую главную долю (более толстую диагональную линию), но меньшую спектральную утечку, о чем свидетельствует равномерно низкая (синяя) внешняя область.