小波变换第1讲:Why wavelet?

小波变换系列
小波变换第1讲:Why wavelet?
小波变换第2讲:尺度函数与小波函数

这部分主要是结合对参考1:The Wavelet Tutorial一书中Part 1和Part 2内容的理解,做一个简单地小结,顺带致敬。另外,知乎:形象易懂讲解算法I——小波变换这部分也做得不错。

PCA是从空间维度进行正交变换分解及重构;

而傅里叶变换FT是以复指数函数(三角正弦/余弦)为正交基的的正交变换,通过FT,可以方便地看到信号中隐藏的频率成分。

那么为什么还需要小波?

本文对FT和短时傅里叶变换STFT在信号处理中的作用以及存在的缺陷,进行一个简单的介绍。

1 傅里叶变换(FT)

1.1 Python Scipy的FFT实现

from scipy.fft import fft, fftfreq
# Number of sample points
N = 600
# sample spacing
T = 1.0 / 800.0
x = np.linspace(0.0, N*T, N, endpoint=False)
y = np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x)
yf = fft(y)
xf = fftfreq(N, T)[:N//2]
import matplotlib.pyplot as plt
plt.plot(xf, 2.0/N * np.abs(yf[0:N//2]))
plt.grid()
plt.show()

在这里插入图片描述

1.2 FT的不足

虽然FT可以看到信号的频谱,但是频谱中却没有时间的信息,即无法告知我们信号中各频率成分是何时出现的。以参考1中给出的例子来说明:

有如下两个信号,左图为若干三角函数的叠加,右图为一个分段函数。二者的差别显而易见。
在这里插入图片描述
可它们经过傅里叶变换之后的频谱又是怎样的呢?
在这里插入图片描述
不考虑纹波及幅值,二者的频谱基本一致。

因此,对于所有频率成分在各时刻t均存在,即平稳信号,stationary signal,如左图信号,FT是一个很好的选择;而对于频率成分随时间会发生变动的信号(非平稳信号,non-stationary signal),如右图信号,当我们需要关心该频率成分何时出现时,FT就无能为力。而现实中的信号多为non-stationary signal,如生物信号(ECG,EEG,EMG)。

所以,需要一种变换方法可以同时提供时频信息,STFT(short time Fourier transform)提供了一种过渡/将就方案。

2 短时傅里叶变换(STFT)

短时傅里叶变换(STFT)又称为加窗傅里叶变换,它是对一定时间窗口内的信号进行傅里叶变换,以获取该时间段内的频域信号。该方法认为,短时间内的信号可视作平稳信号(stationary signal)。其公式如下:
在这里插入图片描述
引用参考3一书中Figure 7-1,对其效果进行说明:
在这里插入图片描述
使用STFT存在如下问题(个人见解):

2.1 窗函数如何选

有兴趣可以看下参考4(参考5,6也可一观),它列出了数十种窗函数。

常见的如下:
在这里插入图片描述
numpy中也给出了若干种Window functions,见参考7。

有的选,就存在选择困难的问题。

2.2 窗口大小的问题

此部分主要来自参考3一书中第7章。

STFT中存在一个时间分辨率和频率分辨率的取舍/平衡问题。

窗口太窄,对时间的分辨率有利,却不利于频率的分辨率;反之亦然。

设有一输入信号(512个采样点),它由如下信号组成:

  • 75 Hz正弦信号;
  • Chirp信号(从200Hz线性衰减到120Hz)
  • 以及在第256个采样点上持续时间为500ms的脉冲信号。
    在这里插入图片描述

在时域上显示如下:
在这里插入图片描述
其FFT频谱如下:
在这里插入图片描述
可以理解,由于FFT实质上是一种时间平均,它显示了120~200Hz频率以及75 Hz主频率的存在,而持续时间很短的脉冲信号频率却没有反映出来。

其STFT频谱又如何呢?

书中采用了矩形窗,窗口大小分别为16,32,64,128:
在这里插入图片描述
从图7-3(a)可以得出,当窗口较窄时,STFT具有很好的time-localized特性,因此可以识别出第256个采样点上的脉冲信号,但是同时它却具有较差的频域分辨率,正弦信号及Chirp信号不能很好地进行分辨;随着窗口增大,STFT在频率分辨率越来越好,正弦信号及Chirp信号分辨地越来越清晰,而此时脉冲信号却逐渐无法分辨(较差的时间分辨率)。

这需要一种trade-off。鱼和熊掌不可兼得吗?

这时就需要一种算法,既可以为高频信号提供好的时间分辨率(对应于窄窗口),又要为低频信号提供好的时间分辨率(对应于宽窗口)。

而小波变换作为解决此问题的当今不二利器,呼之欲出~

参考文献

[1] ROBI POLIKAR:The Wavelet Tutorial_The Engineer’s Ultimate Guide to Wavelet Analysis
[2] 知乎:形象易懂讲解算法I——小波变换
[3] Digital Signal Processing System Design by Nasser Kehtarnavaz
[4]Spectrum and spectral density estimation by the Discrete Fourier transform (DFT), including a comprehensive list of window functions and some new flat-top windows.
[5] On the Development of STFT-analysis and ISTFT-synthesis Routines and their Practical Implementation
[6] Window Functions and Their Applications in Signal Processing
[7] numpy Window functions

おすすめ

転載: blog.csdn.net/WANGWUSHAN/article/details/119779297