ch8_6利用MATLAB实现信号小波分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0.5
0
-0.5 0
0.5
0
-0.5 0
0.5
0
-0.5 0 0.5
0
-0.5 0
MATLAB程序运行结果:
0.2
0.4
0.6
0.8
0.2
0.4
0.6
0.8
0.2
0.4
0.6
0.8
0.2
0.4
0.6
0.8
原始信号
1
仅由第5级小波近似系数重建的信号 IDWT{ [cA5|0|0|0|0|0]}
1
仅由第3级小波近似系数重建的信号 IDWT{ [cA3|0|0|0]}
利用MATLAB产生分解与重建滤波器组 利用MATLAB计算小波函数 利用MATLAB计算DWT和IDWT 基于小波的信号去噪 基于小波的信号压缩
利用MATLAB产生分解与重建滤波器组
计算滤波器组的函数为wfilters,其调用格式为
[Ld,Hd,Lr,Hr] = wfilters('wname') 其中:
MATLAB程序运行结果:
低通分解滤波器Ld 1
低通重建滤波器Lr 1
0.5
0.5
0
0
-0.50
1
2
3 -0.50
1
2
3
高通分解滤波器Hd 1
高通重建滤波器Hr 1
0.5
0.5
0
0
-0.5
0
1
2
3 -0.5 0
1
2
Fra Baidu bibliotek
3
利用MATLAB计算小波函数
计算小波中尺度函数与小波函数的函数为wavefun, 其调用格式为
0.5
0
-0.5 0
0.2
0.4
0.6
0.8
1
MATLAB程序如下: wname='db1'; dwtmode('per') t=linspace(0,1,1024); x=20*t.^2.*(1-t).^4.*cos(12*pi*t); subplot(511);plot(t,x); axis([0 1 -0.5 0.5]);title('Signal'); [C,L] = wavedec(x,5,wname); subplot(512);plot(t,C); axis([0 1 -3 3]);
-20
1
2
3
利用MATLAB计算一维DWT和IDWT
计算多级DWT和IDWT的函数为wavedec和waverec,
其调用格式为
[C,L] = wavedec(x,N,'wname')
x = waverec(C,L,'wname')
其中:
wname: 小波名; x: 时域信号; N: 小波变换的级数;
数字信号处理
Digital Signal Processing
电子信息工程学院 信号处理课程组
信号时频分析与小波分析
※ 信号短时Fourier变换 ※ 小波展开与小波变换 ※ 小波变换与多分辨分析 ※ 小波变换分解与重构算法 ※ 基于小波变换的信号处理 ※ 利用MATLAB实现信号的小波分析
利用MATLAB实现信号的小波分析
[phi, psi, t] = wavefun('wname',Iter)
其中: wname: Iter: phi: psi: t:
小波名; 计算过程的迭代次数;
尺度函数j(t); 小波函数y(t);
尺度函数与小波函数的抽样点
[例] 利用MATLAB计算db2小波的尺度函数与小波函数。
MATLAB程序如下:
若 C = [cA3 cD3 cD2 cD1] x=wrcoef('a',C,L, 'wname',3) x=IDWT{[cA3 0 0 0]} x=wrcoef('a',C,L, , 'wname',2) x=IDWT{[cA3 cD3 0 0] }=IDWT{[cA2 0 0]}
[例] 已知某信号的波形如图所示,试计算其5级小波变换系数, 由第5、3、1级小波近似系数重建的信号。
C = [cAN cDN cDN-1 ••• cD1]; L(1)= cAN的长度, L(2)= cDN的长度, L(N+1)= cD1的长度, L(N+2)= x的长度
利用部分小波系数重建信号
x=wrcoef('type', C, L, 'wname', N) type='a' 由第N级近似分量重建信号 type=‘d' 由第N级细节分量重建信号 wname: 小波名;
A5=wrcoef('a',C,L,wname,5); subplot(513);plot(t,A5); axis([0 1 -0.5 0.5]); A3=wrcoef('a',C,L,wname,3); subplot(514);plot(t,A3); axis([0 1 -0.5 0.5]); A1=wrcoef('a',C,L,wname,1); subplot(515);plot(t,A1); axis([0 1 -0.5 0.5]);
MATLAB程序如下: wn='db2'; [Ld,Hd,Lr,Hr] = wfilters(wn); k=0:3; subplot(221);stem(k,Ld); title('低通分解滤波器Ld'); subplot(222);stem(k,Lr); title('低通重建滤波器Lr'); subplot(223);stem(k,Hd); title('高通分解滤波器Hd'); subplot(224);stem(k,Hd); title('高通重建滤波器Hr'););
1
仅由第1级小波近似系数重建的信号
1
IDWT{ [cA1|0]}
基于小波的信号去噪
XD = wden(X, TPTR, SORH, SCAL, N, 'wname')
其中: XD: 对噪声信号X去噪后得到的信号; X: 含噪声信号; TPTR: 阈值规则,主要有'rigrsure', 'heursure', 'sqtwolog', 'minimaxi'; SORH: 阈值方法, 's' (soft阈值), 'h' (hard阈值); SCAL: 阈值尺度的调整方法,主要有'one', ' sln', ' mln' ;
Ld:分解低通滤波器h0[-n]; Hd:分解高通滤波器h1[-n]; Lr: 重建低通滤波器h0[n]; Hr: 重建高通滤波器h1[n] wname:小波名,常用正交小波名有
db1、db2、db3 …, coif1, coif2, coif3等。
[例] 计算db2小波的四个滤波器,并画出其时域波形。
MATLAB程序运行结果:
尺度函数
Iter=20; 1
wname='db2';
[s,w,t]=wavefun(wname,Iter);
0
subplot(211);plot(t,s); title('尺度函数');
0
1
2
3
小波函数 2
subplot(212);plot(t,w);
0
title('小波函数');