早教吧作业答案频道 -->其他-->
急求小波包分解和重构程序,在线等!
题目详情
急求小波包分解和重构程序,在线等!
▼优质解答
答案和解析
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('误差信号');
在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('误差信号');
看了 急求小波包分解和重构程序,在...的网友还看了以下:
若已知一条直线的一般式方程和一个圆的一般方程,求直线截圆的弦长.请为之设计算法并画出程序框图 2020-05-13 …
高二--直线方程3题目1.原点O在直线L的射影为(4,-1),求直线L方程.2.已知三角形ABC三 2020-05-22 …
下列关于框图的说法:①程序框图是算法步骤的直观图示,其要义是根据逻辑关系,用流程线连接各基本单元; 2020-06-27 …
1.已知曲线C:x^2+ycosx-y^2=0a.求dy/dxb.P(π/2,-π/2)为曲线C上 2020-06-30 …
下列关于流程线的说法,不正确的是[]A.流程线表示算法步骤执行的顺序,用来连接程序框B.流程线只要 2020-07-23 …
过点p(3.4)的直线l在y轴上的截距为71求直线l的方程,2求过o(5,0)且和直线l平过点p( 2020-07-30 …
1.已知曲线y=1/x(1)求曲线在点P(1,1)处的切线方程(2)求曲线过点Q(1,0)的切线方 2020-07-31 …
下列关于工序流程图的说法正确的是()A.流程图内每一道工序,可以用矩形表示也可用平行四边形表示B.流 2020-11-28 …
下列判断不正确的是()A.画工序流程图类似于算法的流程图,自顶向下逐步细化B.工序流程图中的流程线表 2020-12-01 …
下列判断不正确的是()A.画工序流程图类似于算法的流程图,自上而下,逐步细化B.在工序流程图中可以出 2020-12-01 …