文章目录
参考文章:
原文链接:https://zhuanlan.zhihu.com/p/19763358
1 前言——傅里叶变换和短时傅里叶变换
- 经验模态分析和离散小波变换都是针对于傅里叶变换和短时傅里叶变换的缺点提出来的!
1.1 频域
上图是时域,下图是频域。
- 贯穿时域与频域的方法之一,就是傅里叶分析。
- 傅里叶分许可以分为:傅里叶级数和傅里叶变换。
1.2 傅里叶级数的频谱
- 不仅仅是矩形,其实任意波形都是可以用这种方式,用正弦波叠加起来的。
1.3 举个例子
所以很多在时域看似不可能做到的数学操作,在频域相反很容易。这就是需要傅里叶变换的地方。尤其是从某条曲线中去除一些特定的频率成分,这在工程上称为滤波,是信号处理最重要的概念之一,只有在频域才能轻松的做到。
1.4 傅里叶的缺点
(1)傅里叶分析不能刻画时间域上信号的局部特性
(2)傅里叶分析对突变和非平稳信号的效果不好,没有时频分析
1.5 短时傅里叶变换的缺点
- 短时傅里叶变换又称,加窗傅里叶变换
缺点是,短时傅里叶的窗口大小难以定义。不能窗口太窄,否则窗内的信号太短,会导致频率分析不够精准,频率分辨率差。
不能窗口太宽,否则时域上不够精细,时间分辨率低。
2 正文
- 傅里叶变换对时间不是很敏感
- 短时傅里叶变换,使用了窗口,假定窗口内的是稳定信号;缺点:窗口的宽度是无法改变的
- 小波变换:很好的应对时变的、非稳态的数字信号
2.1 小波和短时傅里叶
短时傅里叶最头疼的是窗口大小问题,如果能够让窗口的大小可以改变,那就非常奈斯了!
短时傅里叶(STFT)是给信号加窗,分段做傅里叶分析(FFT);
而小波变换,直接把傅里叶的基换了,将无限长的三角函数基换成了有限长的会衰减的小波基。
这样不仅能够获取频率,还可以定位到时间了!!
2.2 变换效果如图
-
公式上的变换
-
图像上的变换,基函数的改变
我大概就学到这里了,我就直接去看代码了。。。
3 代码
import numpy as np
import pandas as pd
import pywt
from skimage.restoration import denoise_wavelet # 小波去噪的一个包
import matplotlib.pyplot as plt
# x 是序列数据,是numpy类型的
x = x.astype(float)/np.max(x) # 除以最大值是为了均值化
x = x[1000:1200]
sigma = 0.05
x_noisy = x + sigma * np.random.randn(x.size)
x_denoise = denoise_wavelet(x_noisy, method='BayesShrink', mode='soft', wavelet_levels=3, wavelet='sym8', rescale_sigma='True')
plt.figure(figsize=(20, 10), dpi=100)
plt.plot(x_noisy)
plt.plot(x_denoise)
plt.show()