1. 程式人生 > >自適應陷波濾波器(Notch濾波器)

自適應陷波濾波器(Notch濾波器)

    自適應濾波器以其自身調節引數的能力以及對訊號和噪聲的先驗知識要求少的優勢得到了廣泛的應用。

   自適應陷波濾波器相比於普通的數字濾波器具有較窄的阻帶和通帶,帶外衰減較快。具有濾波輸出(Y輸出)和陷波輸出(E輸出)兩個輸出。能夠實現窄帶濾波和窄帶陷波。當干擾是單頻訊號,或者有用訊號是單頻訊號時,自適應Notch濾波器具有很好的濾波效果。

       自適應Notch濾波器的基本原理是將某中心頻率的正交訊號作為參考訊號,利用該正交訊號的線性組合跟蹤輸入訊號,並通過每一步的殘差不斷調整線性組合的權係數,從而使得輸入訊號中與參考訊號線性相關的部分分離出來,達到窄帶濾波的效果。自適應Notch濾波器的結構所示:

其中參考訊號為,  w_{0}表示 參考訊號的中心頻率

          

若權值的遞推公式選取LMS演算法則,自適應Notch濾波器的遞推過程如下:

其中u 為自適應Notch濾波器的學習步長,  u=\frac{B*\pi }{A^{2}fs}  

w_{c}w_{s}為兩個參考訊號的權係數。

模擬過程如下:

在300Hz單頻訊號中加入50Hz的工頻干擾;利用Notch濾波器將50Hz的工頻干擾濾除

%自適應陷波器模擬
clc
clear all
close all
%%——造接收訊號—————————————————————
f1=300;
fs=10000;
ts=0:1/fs:1-1/fs; 
s=cos(2*pi*ts*f1)+sin(2*pi*ts*f1);%+cos(2*pi*t*f3);
sig_in=[zeros(1,10000) s  zeros(1,10000)];

N=length(sig_in);
t=(1:N)*1/fs;
n=0.5*cos(2*pi*t*50); %引入50Hz工頻干擾
d=sig_in+n;                  %引入50Hz工頻干擾後的接收輸入

%%  ——造參考訊號—————————————————————
x1=cos(2*pi*t*50);                 %參考輸入1
x2=sin(2*pi*t*50);                 %參考輸入2
%%  ——Notch濾波—————————————————————
w1=0.1;
w2=0.1;                       %權向量初值
e=zeros(1,N);
y=zeros(1,N);
u=0.001;                  
for i=1:N                       %LMS演算法
    y(i)=w1*x1(i)+w2*x2(i);
    e(i)=d(i)-y(i); 
    w1=w1+u*e(i)*x1(i); 
    w2=w2+u*e(i)*x2(i); 
end

figure(1) %%% 畫出時域波形
subplot(4,1,1);plot(t,sig_in);
xlabel('時間/s')
title('原始訊號');
subplot(4,1,2); plot(t,d);
xlabel('時間/s')
title('加入50Hz工頻干擾後的接收訊號');
subplot(4,1,3);plot(t,e);
xlabel('時間/s')
title('自適應陷波器輸出訊號');
subplot(4,1,4); plot(t,y);
xlabel('時間/s')
title('自適應濾波器輸出訊號');


figure(2)%%% 畫出頻譜
Nfft=100000;
f=(0:1/Nfft:(1-1/Nfft))*fs;
subplot(4,1,1);
plot(f,abs(fft(hilbert(sig_in(10000:20000)),Nfft)));xlim([0 500]);%axis([0 1000 0 1000]);
xlabel('頻率/Hz')
title('原始訊號 頻譜');
subplot(4,1,2);plot(f,abs(fft(hilbert(d(10000:20000)),Nfft)));xlim([0 500]);%grid on;%axis([0 1000 0 5000]);
xlabel('頻率/Hz')
title('加入50Hz工頻干擾後的接收訊號  頻譜');
subplot(4,1,3);plot(f,abs(fft(hilbert(e(10000:20000)),Nfft)));xlim([0 500]);%grid on;%axis([0 1000 0 1000]);
xlabel('頻率/Hz')
title('自適應陷波器輸出訊號 頻譜');
subplot(4,1,4);plot(f,abs(fft(hilbert(y(10000:20000)),Nfft)));xlim([0 500]);%grid on;%axis([0 1000 0 1000]);
xlabel('頻率/Hz')
title('自適應濾波器輸出訊號 頻譜');

 

由上圖可以看出濾波器能夠實現去除工頻干擾的功能,陷波通道(e通道)輸出的即為 濾掉50Hz工頻干擾後的訊號,而濾波通道(Y通道)得到是要濾除的50Hz工頻干擾。