陷波滤波器,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

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值