1.算法介绍
首先来看看什么是小波变换?
要回答这个问题,首先得从傅里叶变换FFT开始说起,了解过FFT的人都知道,对一段信号进行傅里叶变换,可以知道这段信号有哪些频率成分存在,比如:
fs = 250; N = 10000; %采样频率和数据点数
n = 0:N-1;t = n/fs; %时间序列
x = sin(2*pi*50*t)+sin(2*pi*60*t);
y = fft(x,N); %对信号进行快速Fourier变换
mag = abs(y); %求得Fourier变换后的振幅
n1 = 0:N-1;
f = n*fs/N; %频率序列
plot(f,mag); %绘出随频率变化的振幅
运行结果:
![](https://img-blog.csdnimg.cn/20201222112904814.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ2OTc3NTM=,size_16,color_FFFFFF,t_70)
模拟一个50Hz和60Hz叠加的信号源,对信号源做FFT变换,可以看到在50Hz和60Hz都分别出现了高峰,代表该信号主要的频率分量为50Hz和60Hz。这也是著名的频域分析。
这里就引出一个问题,对信号做FFT可以知道整个信号包含哪些频率,和频谱能量分布情况,对于平稳信号来说是没问题,自然界大部分都是非平稳信号,这个时候我想知道某个频率出现的时间点,FFT就办不到了,FFT只是频域分析,没有时间的概念,当然有人就会说,对某段信号再进行FFT不就好了,也就是短时傅里叶变换,当然这种也是可以的,但是窗口设计大小很难去设定,有兴趣的可以去了解一下,这里不展开讲。
另外一种更好的方法就是本章的重点,也就是小波变换,先来看小波变换的公式:
小波变换有两个变量,一个是伸缩 a、一