当前位置:文档之家› butterworth filter

butterworth filter

Assignment 2
一、设计滤波器
1、Matlab程序
%设计一低通滤波器,通带边缘频率Wp=50,阻带边缘频率100Hz,在通带
%振荡不超过1dB,阻带衰减不小于60dB
%采用butterworth滤波器
clear all
fs=1000;%采样频率
Wp=[2*50/fs];%通带边缘频率标准化
Ws=[2*100/fs];%阻带边缘频率标准化
[n,Wn]=buttord(Wp,Ws,1,60);%满足要求的最小阶数的butterworth滤波器参数
[b,a]=butter(n,Wn,'low'); %满足要求的低通butterworth滤波器
fvtool(b,a)%幅频特性
figure(2)
freqz(b,a,128,fs)%幅频和相频特性
2、运行结果及分析
图1 滤波器幅频特性(dB)
从图1可以看出,在0.1π,即50Hz以前,信号基本没有衰减;0.1π以后,信号急剧衰减,在0.2π时,衰减已达到-60dB,是符合设计要求的。

图2 滤波器幅频特性(幅值)
从图2中可以更明显地看出,在50Hz以前,信号的幅值最大只衰减了约10%,即约1dB,而在100Hz以后,信号幅值几乎已经衰减为0了,符合设计要求。

图3 滤波器幅频及相频特性
从图3可以看出,所设计的滤波器的相频特性总体来说不是线性的,但在通带0~50Hz、
过渡带50~100Hz、阻带100Hz以后的频率范围内,都可以近似认为相频曲线是线性的,因此总体来说,所设计的滤波器有较好的相频特性。

二、使用设计的滤波器对信号进行滤波
1、Matlab程序
%产生一正弦信号,含3个频率分量:20Hz,100Hz,300Hz
T = 10;
t = 0:1/fs:T-1/fs;
N = length(t);
f1 = 20;
f2 = 100;
f3 = 300;
x = sin(2*pi*f1*t) + sin(2*pi*f2*t) + sin(2*pi*f3*t);
%对正弦信号进行傅里叶变换,画出其时域及频域图像
X = fft(x);
f = fs*(0:N-1)/N;
figure(3); clf;
subplot(211);
plot(t,x);
subplot(212);
plot(f(1:N/2),2*abs(X(1:N/2))/N);
xlabel('Frequency (Hz)');
grid on;
%采用所涉及的滤波器对信号进行滤波,在画出其时域及频域的图像
y = filter(b,a,x);
Y = fft(y);
figure(4);clf;
subplot(211);
plot(t,y);
grid on;
subplot(212);
plot(f(1:N/2),2*abs(Y(1:N/2))/N);
xlabel('Frequency (Hz)');
grid on;
2、运行结果及分析
图4 原正弦信号及其频谱
图5 滤波后的信号及其频谱
从图4及图5的对比中可以看出,原信号中只有20Hz的频率成分被保留下来,且其幅值基本没有被衰减,而100Hz及300Hz的频率成分基本已衰减为0,这与所设计的滤波器的特性是相符的。

(a)
(b)
图6 (a)滤波后信号的时域图(放大)(b)滤波器相频特性曲线(放大)根据图6 (a)滤波后信号的时域图(放大)可以计算出,通过滤波器后20Hz正弦频率成分的相位滞后了约150°;而从图6 (b)滤波器相频特性曲线(放大)中可以看出,对频率20Hz的信号,通过滤波器后相位会滞后约150°。

综上,滤波的结果与所设计的滤波器的特性是相符的。

相关主题