小波应用举例

小波应用举例

标签(空格分隔): 现代信号 胡广书 笔记 小波 信号分解 多尺度


令信号由6个正弦组成,频率分别是1Hz, 5Hz, 10Hz, 20Hz, 50Hz ,100Hz,抽样频率为600Hz。这些正弦信号的幅度都一样。
1. 自己选定小波,选择合适的MATLAB文件,对该信号进行多尺度分解,尺度的选择要保证将每一个正弦分量分开;
2.分解时试采用多孔算法,以防止数据逐级减少;
3. 重建原信号。

信号的生成

clf
f1=1;f2=5;f3=10;f4=20;f5=50;f6=100;fs=200;N=400;
omiga=2*pi/fs;
t=0:N-1;
s1=sin(f1*omiga*t);
s2=sin(f2*omiga*t);
s3=sin(f3*omiga*t);
s4=sin(f4*omiga*t);
s5=sin(f5*omiga*t);
s6=sin(f6*omiga*t);
s=s1+s2+s3+s4+s5+s6;


观察六个信号的分布,发现通过五级分解可以分解出六个信号,具体分解情况如下:
小波应用举例_第1张图片
先尝试使用最简单的haar小波,结果如下:

Daubechiesxi小波:

选择Symlets小波,尝试分解,结果如下:

Biorthogonal小波:

Coiflet(coifN)小波:

可以明显观察出Coiflet(coifN)小波和Symlets小波效果比较好,但是每个分解其实都在10Hz,20Hz,50Hz这几个频率处有问题,猜想是因为第一级分解实际在50Hz左右,导致这种现象。

重建原信号

给出原信号和重建后的信号:

程序:

clf
f1=1;f2=5;f3=10;f4=20;f5=50;f6=100;fs=200;N=400;
omiga=2*pi/fs;
t=0:N-1;
s1=sin(f1*omiga*t);
s2=sin(f2*omiga*t);
s3=sin(f3*omiga*t);
s4=sin(f4*omiga*t);
s5=sin(f5*omiga*t);
s6=sin(f6*omiga*t);
s=s1+s2+s3+s4+s5+s6;
%plot(s);ylabel('x(t)')
wname='sym8';
figure(1)
suptitle(wname)
subplot(521);plot(s);ylabel('x(t)')
subplot(522);plot(s);ylabel('x(t)')
deccoef=wavelet_dec(s,5,wname);
sig = wavelet_rec(deccoef,5,wname)
figure(2)
subplot(211)
plot(s)
subplot(212)
plot(sig*sqrt(2))

你可能感兴趣的:(MATLAB,数字信号处理)