基于matlab的数字陷波器设计

基于matlab的数字陷波器设计

陷波器是一种简单的二阶IIR滤波器,其幅度响应在某一频率上为零,可用来消除某个频率分量,如:滤除信号中由电源引起的50Hz工频干扰。其系统函数为:


其中:ω0=2πf0/fs---陷波数字频率(rad);f0---陷波频率(Hz);fs---取样频率(Hz);

r----常数。

实验要求:编程实现以下功能:

1)设陷波频率f0=50Hz,取样频率fs=600Hz,r=0.9,画H(z)的幅频和相频特性。

2)画H(z)的零极点图,体会陷波原理。

3)利用该陷波器对信号:x(n)=2*sin(2*pi*50/fs*n)+sin(2*pi*100/fs*n) (n=0~599)进行滤波,画出x(n)及滤波输出y(n)。

程序代码:

%数字陷波器
clear
clc
f0=50;fs=600;r=0.9;
w0=2*pi*f0/fs;
b=[1 -2*cos(w0) 1];
a=[1 -2*r*cos(w0) r*r];
N=1024;
[H,w]=freqz(b,a,N);
subplot(221);plot(w,abs(H));grid on;title('陷波器的幅频响应');
subplot(222);plot(w,angle(H));grid on;title('陷波器的相频响应');
subplot(223);zplane(b,a);grid on;title('陷波器的零极点图');
n=0:N-1;
x=sin(2*pi*50*n/fs)+sin(2*pi*100*n/fs);
X=fft(x,N);
y=filter(b,a,x);
Y=fft(y,N);
f=fs/N*(0:N/2-1);
figure;
subplot(221);plot(n,x);grid on;title('原信号x(n)');
subplot(222);plot(f,abs(X(1:N/2)));grid on;title('x(n)的幅频谱');
subplot(223);plot(n,y);grid on;title('陷波器滤波后的信号y(n)');
subplot(224);plot(f,abs(Y(1:N/2)));grid on;title('y(n)的幅频谱');

程序运行结果图:



  • 23
    点赞
  • 142
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值