基于matlab的数字陷波器设计

基于matlab的数字陷波器设计

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

基于matlab的数字陷波器设计_第1张图片

其中:ω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)的幅频谱');

程序运行结果图:

基于matlab的数字陷波器设计_第2张图片

基于matlab的数字陷波器设计_第3张图片

你可能感兴趣的:(基于matlab的信号处理仿真)