一维离散小波MATLAB命令行的实现方法小波、小波包、MATLAB 2009-07-19 16:16:44 阅读245 评论5 字号:大中小 订阅 noisbloc信号是MATLAB自带的含高频噪声的信号。
1.装载信号 在MATLAB命令行中输入 load noisbloc s=noisbloc(1:1024); ls=length(s); plot(s); 2.完成信号的单尺度一维离散小波分解 采用db4基本小波分解信号 在命令窗口中输入 [cA1,cD1]=dwt(s,'db4'); 这就产生了低频系数cA1和高频系数cD1。 可以通过whos命令查看cA1和cD1的长度: whos Name Size Bytes Class cA1 1x515 4120 double array cD1 1x515 4120 double array ls 1x1 8 double array noisbloc 1x1024 8192 double array s 1x1024 8192 double array Grand total is 3079 elements using 24632 bytes 3.从系数中重构低频部分和高频部分 从第二步产生的系数cA1和cD1构造第一层的低频和高频(A1和D1)系数; A1=upcoef('a',cA1,'db4',1,ls); D1=upcoef('a',cD1,'db4',1,ls); 或用下面两个函数: A1=idwt(cA1,[],'db4',ls); D1=idwt(cD1,[],'db4',ls); 4.显示高频和低频部分 为了显示第一层分解结果,输入 subplot(211); plot(A1); title('低频A1'); subplot(212); plot(D1); title('低频D1'); 5.由小波逆变换恢复信号 使用idwt函数很容易实现,在命令窗口输入 subplot(211); plot(s); title('原始信号'); subplot(212); plot(A0); title('重构信号'); 6.多层一维分解 为了完成一个5层的分解,输入: [C,L]=wavedec(s,5,'db4'); 7.提取系数的低频和高频部分 为了从上面的C中提取第3层的低频系数,输入: cA3=appcoef(C,L,'db4',3); 8.重构第3层的低频系数 为了从上面的C中重构第3层的低频系数,输入: A3=wrcoef('a',C,L,'db4',3); 9.重构第1、2、3、4、5层的高频信号 其方法是: cA5=appcoef(C,L,'db4',5); A5=wrcoef('a',C,L,'db4',5); D1=wrcoef('d',C,L,'db4',1); D2=wrcoef('d',C,L,'db4',2); D3=wrcoef('d',C,L,'db4',3); D4=wrcoef('d',C,L,'db4',4); D5=wrcoef('d',C,L,'db4',5); 下面显示多尺度一维分解的结果: subplot(322); plot(D1); title('低频D1'); subplot(323); plot(D2); title('低频D2'); subplot(323); plot(D3); title('低频D3'); subplot(325); plot(A5); title('低频D4'); subplot(326); plot(A5); title('低频D5'); 10.重构原始信号并显示 A0=waverec(C,L,'db4'); subplot(311); plot(s); title('原始信号'); subplot(312); plot(A0); title('重构信号'); subplot(313); plot(s-A0); title('误差信号'); 用M文件一次运行可得结果 clc clear all load noisbloc s=noisbloc(1:1024); ls=length(s); figure plot(s); [cA1,cD1]=dwt(s,'db4'); whos A1=upcoef('a',cA1,'db4',1,ls); D1=upcoef('a',cD1,'db4',1,ls); A1=idwt(cA1,[],'db4',ls); D1=idwt(cD1,[],'db4',ls); figure subplot(211); plot(A1); title('低频A1'); subplot(212); plot(D1); title('低频D1'); [C,L]=wavedec(s,5,'db4'); cA3=appcoef(C,L,'db4',3); A3=wrcoef('a',C,L,'db4',3); cA5=appcoef(C,L,'db4',5); A5=wrcoef('a',C,L,'db4',5); D1=wrcoef('d',C,L,'db4',1); D2=wrcoef('d',C,L,'db4',2); D3=wrcoef('d',C,L,'db4',3); D4=wrcoef('d',C,L,'db4',4); D5=wrcoef('d',C,L,'db4',5); figure subplot(321); plot(A5); title('低频A5'); subplot(322); plot(D1); title('低频D1'); subplot(323); plot(D2); title('低频D2'); subplot(324); plot(D3); title('低频D3'); subplot(325); plot(A5); title('低频D4'); subplot(326); plot(A5); title('低频D5'); A0=waverec(C,L,'db4'); figure subplot(311); plot(s); title('原始信号'); subplot(312); plot(A0); title('重构信号'); subplot(313); plot(s-A0); title('误差信号'); |
|