MATLAB和Mathematica、Maple并稱為三大數學軟件。它在數學類科技應用軟件中在數值計算方面首屈一指。MATLAB可以進行矩陣運算、繪制函數和數據、實現算法、創建用戶界面、連接其他編程語言的程序等,主要應用于工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。
[xd,cxd,lxd]=wden(x,tptr,sorh,scal,n,‘wname’)
式中:
輸入參數x 為需要去噪的信號;
1.tptr :閾值選擇標準。
1)無偏似然估計(rigrsure)原則。它是一種基于史坦無偏似然估計(二次方程)原理的自適應閾值選擇。對于一個給定的閾值t,得到它的似然估計,再將似然t 最小化,就得到了所選的閾值,它是一種軟件閾值估計器。
2)固定閾值(sqtwolog)原則。固定閾值thr2 的計算公式為:thr 2log(n) 2 = (6)式中,n 為信號x(k)的長度。
3)啟發式閾值(heursure) 原則。它是rigrsure原則和sqtwolog 原則的折中。如果信噪比很小,按 rigrsure 原則處理的信號噪聲較大,這時采用sqtwolog原則。
4)極值閾值(minimaxi)原則。它采用極大極小原理選擇閾值,產生一個最小均方誤差的極值,而不 是沒有誤差。
2.sorh :閾值函數選擇方式,即軟閾值(s) 或硬閾值(h)。
3.scal :閾值處理隨噪聲水平的變化,scal=one 表示不隨噪聲水平變化,scal=sln 表示根據第一層小波分解的噪聲水平估計進行調整,scal=mln 表示根據每一層小波分解的噪聲水平估計進行調整。
4.n 和wname 表示利用名為wname 的小波對信號進行n 層分解。輸出去噪后的數據xd 及xd 的附加小波分解結構[cxd,lxd]。 常見的幾種小波:haar,db,sym,coif,bior
用MATLAB對一語音信號進行小波分解,分別用強閾值,軟閾值,默認閾植進行消噪處理。
復制內容到剪貼板
代碼:
%裝載采集的信號leleccum.mat
load leleccum;
%=============================
%將信號中第2000到第3450個采樣點賦給s
indx=2000:3450;
s=leleccum(indx);
%=============================
%畫出原始信號
subplot(2,2,1);
plot(s);
title(‘原始信號’);
%=============================
%用db1小波對原始信號進行3層分解并提取系數
[c,l]=wavedec(s,3,‘db1’);
a3=appcoef(c,l,‘db1’,3);
d3=detcoef(c,l,3);
d2=detcoef(c,l,2);
d1=detcoef(c,l,1);
%=============================
%對信號進行強制性消噪處理并圖示結果
dd3=zeros(1,length(d3));
dd2=zeros(1,length(d2));
dd1=zeros(1,length(d1));
c1=[a3 dd3 dd2 dd1];
s1=waverec(c1,l,‘db1’);
subplot(2,2,2); plot(s1);grid;
title(‘強制消噪后的信號’);
%=============================
%用默認閾值對信號進行消噪處理并圖示結果
%用ddencmp函數獲得信號的默認閾值
[thr,sorh,keepapp]=ddencmp(‘den’,‘wv’,s); s
2=wdencmp(‘gbl’,c,l,‘db1’,3,thr,sorh,keepapp);
subplot(2,2,3); plot(s2);grid;
title(‘默認閾值消噪后的信號’);
%=============================
%用給定的軟閾值進行消噪處理
sosoftd2=wthresh(d2,‘s’,1.823);
softd3=wthresh(d3,‘s’,2.768);
c2=[a3 softd3 softd2 softd1];
s3=waverec(c2,l,‘db1’);
subplot(2,2,4); plot(s3);grid;
title(‘給定軟閾值消噪后的信號’); f
td1=wthresh(d1,‘s’,1.465);
評論
查看更多