?? dffdg.txt
字號:
% mallet_wavelet.m
% 此函數用于研究Mallet算法及濾波器設計
% 此函數僅用于消噪
a=pi/8; %角度賦初值
b=pi/8;
%低通重構FIR濾波器h0(n)沖激響應賦值
h0=cos(a)*cos(b);
h1=sin(a)*cos(b);
h2=-sin(a)*sin(b);
h3=cos(a)*sin(b);
low_construct=[h0,h1,h2,h3];
L_fre=4; %濾波器長度
low_decompose=low_construct(end:-1:1); %確定h0(-n),低通分解濾波器
for i_high=1:L_fre; %確定h1(n)=(-1)^n,高通重建濾波器
if(mod(i_high,2)==0);
coefficient=-1;
else
coefficient=1;
end
high_construct(1,i_high)=low_decompose(1,i_high)*coefficient;
end
high_decompose=high_construct(end:-1:1); %高通分解濾波器h1(-n)
L_signal=100; %信號長度
n=1:L_signal; %信號賦值
f=10;
t=0.001;
y=10*cos(2*pi*50*n*t).*exp(-20*n*t);
figure(1);
plot(y);
title('原信號');
check1=sum(high_decompose); %h0(n)性質校驗
check2=sum(low_decompose);
check3=norm(high_decompose);
check4=norm(low_decompose);
l_fre=conv(y,low_decompose); %卷積
l_fre_down=dyaddown(l_fre); %抽取,得低頻細節
h_fre=conv(y,high_decompose);
h_fre_down=dyaddown(h_fre); %信號高頻細節
figure(2);
subplot(2,1,1)
plot(l_fre_down);
title('小波分解的低頻系數');
subplot(2,1,2);
plot(h_fre_down);
title('小波分解的高頻系數');
l_fre_pull=dyadup(l_fre_down); %0差值
h_fre_pull=dyadup(h_fre_down);
l_fre_denoise=conv(low_construct,l_fre_pull);
h_fre_denoise=conv(high_construct,h_fre_pull);
l_fre_keep=wkeep(l_fre_denoise,L_signal); %取結果的中心部分,消除卷積影響
h_fre_keep=wkeep(h_fre_denoise,L_signal);
sig_denoise=l_fre_keep+h_fre_keep; %信號重構
compare=sig_denoise-y; %與原信號比較
figure(3);
subplot(3,1,1)
plot(y);
ylabel('y'); %原信號
subplot(3,1,2);
plot(sig_denoise);
ylabel('sig\_denoise'); %重構信號
subplot(3,1,3);
plot(compare);
ylabel('compare'); %原信號與消噪后信號的比較
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -