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
陷波濾波器,matlab代碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.