【机器学习笔记32】短时傅里叶变换

【参考资料】
【1】 https://wenku.baidu.com/view/9c142e21941ea76e59fa04c3.html

傅里叶变换的局限性

1 需要利用信号的全部时域信息;
2 没有反应频率随时间变换的信号情况;

短时傅里叶变换

1964年Gabor提出了短时傅里叶变换(有叫Gabor变换),即在传统的傅里叶变换的基础上加了一个时间窗。如下:

Sw(x,t)=x(τ)m(τt)ejωτdτS_w(x, t) = \int x(\tau) m(\tau-t) e^{-j\omega \tau} d\tau

python 程序
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import math


if __name__ == '__main__':

    df = pd.read_csv('./data/test.csv', sep=',')

    data = df['std_value'].astype(float)

    #在时序51、52、52加入毛刺型号,该窗口傅里叶变换增加了高频信号
    data[51] = 10
    data[52] = 11
    data[53] = 15

    # 设置对话框大小
    fig = plt.gcf()
    fig.set_size_inches(12, 7)

    for j in range(0, 5):

        plt.subplot(int('23' + str(j + 1)))
        plt.plot(np.fft.fft(data[20 * j :20*(j + 1)]))   
        plt.title(' time windows' + str(20*j) + '-' + str(20*(j + 1)))
    
    plt.show()

【机器学习笔记32】短时傅里叶变换