基于MATLAB的高通滤波器设计
2012-09-21王鹏
王 鹏
济南军区综合训练基地学生军训教研室,山东济南 214035
基于MATLAB的高通滤波器设计
王 鹏
济南军区综合训练基地学生军训教研室,山东济南 214035
为了进一步优化滤波器设计,便于及时调整滤波器的参数,提出了基于MATLAB平台利用滤波器设计与分析工具箱设计数字滤波器。阐述了数字滤波器的基本原理和滤波器设计的操作步骤,并进行仿真模拟。结果表明:所设计的滤波器可以有效抑制干扰信号,提高信噪比;设计过程快速简单,方便根据实际需求调整滤波器的参数,适用于工程实践中。
MATLAB;高通;数字滤波器
引言
在工程实际的各种测量与控制系统中,系统通常输出的信号并不是模拟的电压电流信号,而是数字信号。对于数字信号的处理,为了去除噪声的影响和其他频率成分信号的干扰,提高系统测量的准确性和稳定性,需要对数字信号进行滤波处理,所以数字滤波器的设计对于实际工程应用中的测量与控制系统就显得尤为重要。而对于传统数字滤波器的设计方法而言,一方面其设计步骤冗杂,需要进行大量的计算;另一方面,一旦滤波器设计好,它的滤波特性也就固定了,想要调整的它的滤波特性就变得非常困难[1-4]。因此针对传统滤波器的缺点,文章提出一种新的便捷的数字滤波器设计方法——利用MATLAB平台中的滤波器设计与分析工具箱。
1 数字滤波器及传统的设计方法
数字滤波技术是信号分析与处理技术中非常重要的一个分支,它作为一个线性处理模块在工程实际中得到了广泛的应用,更为重要的是它能够得到准确的线性相位关系,这是模拟器件几乎无法实现的。通常,数字滤波器分为两种,分别是有限冲激响应滤波器(FIR)和无限冲激响应滤波器(IIR)。相比于IIR,FIR具有更加良好的线性相位特性,所以它的应用更加广泛。它内核的结构是一个分节的延时线,然后再对把每一分节的输出进行加权求和,最终得到滤波后的输出,它的差分方程[5]可表示为
式中N为抽头数,x(n)为输入序列,y(n)为输出序列,h(i)是第i个抽头系数。
滤波器的相应函数即为
由(1)式和(2)式可知,数字滤波器设计的核心工作就是计算其脉冲响应系数。计算脉冲响应系数的传统方法主要三种:等波纹最佳逼近法、频率采样法和窗函数法。运用这些方法设计滤波器时,计算工作量大,费时。
2 高通滤波器的MATLAB设计
2.1 滤波器设计与分析工具箱
MATLAB平台中含有专门用于滤波器设计与分析的工具箱——FDATool(Filter Design & Analysis Tool)。在FDATool这个工具箱中,我们可以快捷、方便、灵活地设计各种常规滤波器。
图1为滤波器设计与分析工具箱的工作界面,它主要分为三个部分:现有滤波器信息(Current Filter Information),用于显示已经设计完成的滤波器的信息,包括结构和阶数等、滤波器特点(Filter Specification),直观地展示已经设计完成的滤波器的各种特性,包括幅频相应曲线、相频相应曲线和滤波器系数等、滤波器设计(Design Filter),主要是选择每一个参数来设计所需的滤波器,包括响应类型(Response Type)、设计方法 (Design Method)、滤波器阶数 (Filter Order)、频率描述(Frenquency Specifications) 和幅值描述(Magnitude Specifications)。
图1 FDATool工作界面
图2 高通滤波器的幅频响应
图3 高通滤波器的相频响应
表1 滤波器系数
2.2 高通滤波器设计实例
以频率为4kHz的理想正弦信号作为仿真信号,在其中加入频率为300Hz的低频信号用来验证设计的滤波器的性能。为了消除低频干扰,可以设计一个高通滤波器。这里选择设计最少阶数的滤波器,采样频率为20kHz。根据以上要求,在响应类型中选择Highpass、在设计方法中选择有限冲击响应Equiripple、在选择滤波器阶数中选择Minimum Order、在频率描中设定Fs为20000Hz,Fstop=3000Hz,Fpass=3900Hz、在频率描述中设定Astop=60dB,Apass=1dB。各种参数设置完成后即可进行滤波器设计,在滤波器特点中就可以直观地观看所设计滤波器的各种特性,包括幅频响应(图2)、相频响应(图3)和滤波器系数(表1)等等。
2.3 信号仿真
利用MATLAB中滤波器设计与分析工具箱得到的滤波器的系数,再编写数字滤波程序,对含有低频干扰的理想正弦信号进行模拟仿真。需保留信号的频率为4kHz,幅值为1;需去除的低频干扰频率为50Hz,幅值为1。相应的数字滤波程序为:
clear
clc
N=512;
fs=20000;
n=0:1:N-1;
f=n*fs/N;
x=sin(2*pi*4000*n/ fs)+sin(2*pi*300*n/fs);
b=abs(fft(x));
coe=load('lingxiangwei_coe.mat'); h=coe.Num;
for m=1:1:512
for k=1:1:49
if(m>=k)
a(k)=h(k)*x(m+1-k); end
end
y(m)=sum(a); end
z=abs(fft(y)); subplot(2,2,1) plot(n,x);
subplot(2,2,2) plot(f,b);
subplot(2,2,3) plot(n,y);
subplot(2,2,4)
plot(f,z);
图4给出了仿真结果,包含滤波前、后仿真的信号及其频谱。不难发现,所设计的高通滤波器很好地去除了300Hz的低频干扰,也很好地保留了4kHz的有用信号。滤波后的信号图中的信号起始部分,相比后面的部分,信号的幅度小,主要是因为数字滤波中的加权累加需要一定的时间,从而导致延时。延时的大小与所设置的滤波器的阶段有关。通常阶数越高,延时越大。
图4 滤波前、后信号的频谱
3 结语
基于MATLAB软件,利用软件中内含的滤波器设计与分析工具箱得到滤波器的系数,从而设计相应的高通滤波器,运算量小,而且方便调整滤波参数,这大大缩短了滤波器设计的时间,提高了设计效率。
[1]楼顺天,李博菡.基于MATLAB的系统分析与设计——信号处理[M].北京:西安电子科技大学出版社,1998.
[2]倪养华,王董玮.数字信号处理一原理与实现[M].上海:上海交通大学出版社,1997.
[3]程佩青.数字信号处理教程[M].第2版.北京:清华大学出版社,2002.
[4]胡广书.数字信号处理一理论、算法与实现[M].北京:清华大学出版社,2003.
[5]蒋志凯.数字滤波与卡尔曼滤波[M].北京:中国科学技术出版社,1993.
The Design of High-pass Filter Based on MATLAB
Wang Peng
Student military training office of the combined training station of Jinan military area, Shandong Jinan, 250029
10.3969/j.issn.1001-8972.2012.19.040
王鹏(1985-),男,汉族,山东临沂人,济南军区综合训练基地学生军训教研室,助教,主要从事国防教育工作。
AbstractIn order to simplify the process of filter design and adjust the parameters easily, a novel method based on MATLAB was put forward.The basic principle of digital filter and detail procedures were introduced and then simulation of sinusoidal signal was done.The results show that the designed filter is able to reject the noisy signal well and improve the signal-to-noise ratio.The whole process is simple and the parameters of filter are easily to adjust, so it is suitable for engineering.
KeywordsMATLAB; high-pass; digital filter