Функция
stft используется для расчета оконного преобразования Фурье (STFT) сигнала, спектральные характеристики которого изменяются со временем.
Функция возвращает матрицу, столбцы которой содержат преобразование Фурье входного сигнала в моменты, разделенные выборками s. Для сигнала x(t) STFT определяется в непрерывном времени как:
где w(t) — скользящее вещественнозначное сужение окна, которое используется для локализации влияния преобразования поблизости от заданного времени.
Сигнал с двумя тонами
Следующий сигнал состоит из двух синусоид разных частот, возникающих в разное время.
1. Задайте компоненты сигнала.
2. Постройте график составного сигнала.
В STFT содержится информация о частотном спектре сигнала и времени, в котором частота присутствует.
3. Рассчитайте STFT со 100 частотными выборками, временным шагом 30 и окном Хэннинга.
Это матрица 100 x 56 (всего имеется 56 временных шагов размером 30 в сигнале длины L)
4. Рассчитайте квадрат величины.
5. Сохраните полученный контур в виде изображения в формате BMP.
(v_spec_rotated.bmp)
На данном изображении показаны не только две частоты, но также и время их возникновения. Однако данная спектрограмма страдает так называемым компромиссом локализации. Для получения временной локализации (когда STFT отмечает время активности синусоид) требуется короткое окно в интервале времени. Напротив, для хорошей частотной локализации необходимо долговременное окно. На этот компромисс также оказывает влияние тип используемого окна, рассматриваемый сигнал, время и частота.
6. В качестве иллюстрации рассчитайте STFT и спектрограмму того же вышеописанного сигнала, но используя длину частотного окна 300 вместо 100.
7. Сохраните полученный контур в виде изображения в формате BMP.
(v_nbspec_rotated.bmp)
STFT, рассчитанное с длинным окном, имеет лучшее частотное разрешение, но временное разрешение при этом ухудшилось. Данный компромисс время-частота можно обойти, используя другие функции времени-частоты, например timefreq и timecorr.
Пользовательское кадрирование
В данном примере частотное окно дополняется нулями до длины преобразования Фурье.
1. Задайте длину окна и процентную часть, занимаемую растущей косинусоидой.
Длина окна не может превышать длину преобразования Фурье.
2. Измените масштаб коэффициентов окна так, чтобы окно имело единицы измерения энергии.
3. Рассчитайте STFT и спектрограмму.
4. Сохраните полученный контур в виде изображения в формате BMP.
(v_spec2_rotated.bmp)
Попробуйте изменить параметры функции stft или частоты синусоид входного сигнала и наблюдайте за изменением графиков.