陷波濾波器,matlab代碼

clear;
clc;
close all;

%%=========================================================%
%
%   原始信號:w=10
%   噪聲信號:wn=300
%
%==========================================================%
%%
h=0.001;
s_f=10;
n_f=300;
T=1;
s_gain=2;
n_gain=0.2;

N=T/h;

u1=0;u2=0;u3=0;
y2=0;y3=0;

notch_a = [0.954107235378368;0.589670700376027;0.954107235378368];
notch_b = [1;0.589670700376027;0.908214470756736];

for i=1:N
   
    t(i) = h*i;
    signal(i) = s_gain*sin(2*pi*s_f*t(i));
    noise(i) = n_gain*sin(2*pi*n_f*t(i));
    signal_n(i) = signal(i) + noise(i);
    
    u0=signal_n(i);
    u1 = u0 - notch_b(2)*y2 - notch_b(3)*y3;
    signal_filter(i) = notch_a(1)*u1 + notch_a(2)*y2 + notch_a(3)*y3;
    
    y3=y2;
    y2=u1;
    
end

figure(1);
plot(t,signal,t,signal_n);
legend('signal','signal\_n');

figure;
plot(t,signal_n,t,signal_filter);
legend('signal\_n','signal\_filter\_n');

figure;
plot(t,signal,t,signal_filter);
legend('signal','signal\_filter\_n');

figure;
[mag,f] = abs_fft(signal_n,h);
plot(f,mag);

figure;
[mag,f] = abs_fft(signal_filter,h);
plot(f,mag);




function [abs_mag,f] = abs_fft(x,dt)

N=length(x);
mag=fft(x,N);
mag = abs(mag);

abs_mag = mag(1:(N/2+1));

df = (1:N)/N/dt;
f = df(1:(N/2+1));
end

資源鏈接:https://download.csdn.net/download/niu_88/12034063

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章