首页 > 其他分享 >小波变换第1讲:Why wavelet?

小波变换第1讲:Why wavelet?

时间:2022-08-14 11:00:11浏览次数:45  
标签:FT 变换 分辨率 STFT wavelet 信号 傅里叶 Why

Content
1 傅里叶变换(FT)
1.1 Python Scipy的FFT实现
1.2 FT的不足
2 短时傅里叶变换(STFT)
2.1 窗函数如何选
2.2 窗口大小的问题
参考文献
小波变换系列
小波变换第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)
基于小波变换的图像融合算法研究与实现
application/msword

5星
超过95%的资源
1.14MB

《基于小波变换的图像融合算法研究与实现》
短时傅里叶变换(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
————————————————
版权声明:本文为CSDN博主「L2_Zhang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/WANGWUSHAN/article/details/119779297

标签:FT,变换,分辨率,STFT,wavelet,信号,傅里叶,Why
From: https://www.cnblogs.com/zywnnblog/p/16584958.html

相关文章

  • 小波变换第2讲:尺度函数与小波函数
    Content1尺度函数1.1Harr尺度函数1.2尺度函数构成的空间1.3尺度函数的性质1.3.1VjV_jVj​空间的正交基1.3.2嵌套子空间1.3.3交空间和并空间1.3.4尺度函数递归......
  • Seven---pytorch学习---维度变换
    ##pytorch学习(4)###维度变换-view&reshape-squeeze&unsqueeze-transpose&permute-expand&repeat-contiguous ####view&reshape>view()与r......