图像3尺度全小波包分解matlab,小波包分解
滿意答案
allen6656
2013.09.06
采納率:40%????等級:12
已幫助:5604人
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('誤差信號');
30分享舉報
總結
以上是生活随笔為你收集整理的图像3尺度全小波包分解matlab,小波包分解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA输入/输出流详细讲解
- 下一篇: 【网络通信 -- SIP 电话】项目实战