基于MATLAB的切比雪夫低通滤波器设计_王建行
- 格式:pdf
- 大小:1.19 MB
- 文档页数:4


基于MATLAB的FIR数字低通滤波器设计..基于MATLAB的FIR数字低通滤波器设计作者:周龙刚(陕西理工学院物理与电信工程学院通信工程专业2011级4班,陕西汉中723003)指导老师:井敏英[摘要]FIR数字滤波器是数字信号处理的一个重要组成部分,由于FIR数字滤波器具有严格的线性相位,因此在信息的采集和处理过程中得到了广泛的应用。
本文介绍了FIR数字滤波器的概念和线性相位的条件,分析了窗函数法、频率采样法和等波纹逼近法设计FIR滤波器的思路和流程。
在分析三种设计方法原理的基础上,借助Matlab仿真软件工具箱中的fir1实现窗函数法中的哈明窗设计FIR低通滤波器。
[关键词] FIR数字滤波器;线性相位窗函数;法哈明窗;MatlabDesigning FIR low-pass digital filter based on VHDL Zhoulonggang(Grade11,Class4,Major of Communication Engineering,School of Physics and Telecommunication Engineering , Shaanxi University of Technology,Hanzhong 723003,Shaanxi)Tutor:JingYingMinAbstract:FIR digital filter is an important part of digital signal processing,the FIR digitalfilter with linear phase, so it has been widely applied in the collection and processing of information in the course of. This paper introduces the concept of FIR digital filter with linear phase conditions, analysis of the window functionmethod and frequency sampling method and the rippleapproximation method ofFIR filter design ideas and processes. Based on analyzing the principle of three kinds of design method, using Matlab simulation software fir1 toolbox in design and implementation of FIR Hamming window window function method in the low pass filter.Keywords: FIR digital filter, linear phase,the window function method,Hamming window,Matlab 目录引言.................................................................................................................. ..........................................-省略部分-清华大学出版社,2008,1.112-114.[3] 郑国强,傅江涛,彭勃等.数字信号处理—理论与实践[M].西安:西安电子科技大学出版社,2009,8.78-87[4] 闫胜利. FIR 滤波器及设计原理[J]. 长春工程学院学报(自然科学版), 2003,23(6):30-33.[5] 杨永昌,李晨辉,王凯. FIR数字滤波器的设计方法[J]. 桂林航天工业高等专科院校学报, 2006,23(14):19-20.[6] 李寿柏, 胡业林. MATLAB在FIR滤波器设计中的应用[J]. 机电工程技术, 2007,23(14):19-20[7] 朱敏. MATLAB数字信号处理工具箱的开发和应用[J]. 信息与电脑, 2010,6(24):6 723 -6 724.[8] 张小虹, 黄忠虎, 邱正伦等. 数字信号处理[M].北京:机械工业出版社, 2008, 9.45-55word 教育资料..附录Af1=100;f2=200;%待滤波正弦信号频率fs=2000;%采样频率m=(0.3*f1)/(fs/2);%定义过度带宽M=round(8/m);%定义窗函数长度N=M-1;%定义滤波器的阶数b=fir1(N,0.5*f2/(fs/2));%使用fir1函数设计滤波器%输入参数分别为滤波器的阶数和截止频率figure(1)freqz(b);%输出滤波器的幅频和相频曲线figure(2)[h,f]=freqz(b,1,512);%滤波器的幅频特性图%[H,W]=freqz(B,A,N)当N是一个整数时函数返回N点的频率向量和幅频响应向量plot(f*fs/(2*pi),20*log10(abs(h)))%参数分别是频率和幅值xlabel('频率/赫兹');ylabel('增益/分贝');title('滤波器的响应增益');figure(3)subplot(211)t=0:1/fs:0.5;%定义时间范围和步长s=sin(2*pi*f1*t)+sin(2*pi*f2*t);%滤波前信号plot(t,s);%滤波前的信号图像xlabel('时间/秒');ylabel('幅度');title('信号滤波前时域图');subplot(212)Fs=fft(s,512);%将信号变换到频域AFs=abs(Fs);%信号频域图的幅值f=(0:255)*fs/512;%频率采样plot(f,AFs(1:256));%滤波前的信号频域图xlabel('频率/赫兹');ylabel('幅度');title('信号滤波前频域图');figure(4)sf=filter(b,1,s);%使用filter函数对信号进行滤波subplot(211)plot(t,sf);%滤波后的信号图像xlabel('时间/秒');ylabel('幅度');title('信号滤波后时域图');axis([0.2 0.5 -2 2]);%限定图像坐标范围subplot(212)Fsf=fft(sf,512); AFsf=abs(Fsf); %滤波后的信号频域图及信号频域图的幅值f=(0:255)*fs/512;%频率采样plot(f,AFsf(1:256));%滤波后的信号频域图xlabel('频率/赫兹');ylabel('幅度');title('信号滤波后频域图');word教育资料达到当天最大量API KEY 超过次数限制。
单位冲激响应及其幅频响应及其代码单位冲激响应的绘制思路比较简单,就是将一条直线用stem函数绘制出来,其图形必须为23个点。
其代码如下:n=0:22;x=n./n;stem(n,x); title('h(n)');axis([0,25,0,1.3]);单位冲激响应的幅频响应要用到专门的函数m文件。
该函数文件可以在主程序中调用多次,节省篇幅。
函数m文件代码如下:function xk=dft(xn,N)n=[0:1:N-1];k=n;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;xk=xn* WNnk;不同窗函数低通幅频响应对比模块窗函数不同,会对设计出的低通滤波器的性能不同。
应尽量选取旁瓣小主瓣窄的窗函数。
为了细致观察窗函数不同对设计的低通滤波器的不同影响,本次试验中设计了不同窗函数的低通滤波器的比较环节。
各个窗函数设计低通滤波器的思路是相似的,只是其中的窗函数是不同的。
用矩形窗设计低通滤波器的代码:D=str2num(get(handles.edit1,'string'));wn=D*pi;N=23;b=fir1(N,wn,boxcar(N+1));[w,t]=freqz(b,1,512);QX=plot(t,abs(w));set(QX,'LineWidth',2.0);title('矩形窗');用汉明窗设计低通滤波器的代码:D=str2num(get(handles.edit1,'string'));wn=D*pi;N=23;b=fir1(N,wn);[w,t]=freqz(b,1,512);QX=plot(t,abs(w));set(QX,'LineWidth',2.0)title('汉明窗');用三角窗设计低通滤波器的代码:D=str2num(get(handles.edit1,'string'));wn=D*pi;N=23;b=fir1(N,wn,triang(N+1));[w,t]=freqz(b,1,512);axis([0,3.5,0,1.5]);QX=plot(t,abs(w));set(QX,'LineWidth',2.0)axis([0,3.5,0,1.4]);title('三角窗');用汉宁窗设计低通滤波器的代码:D=str2num(get(handles.edit1,'string')); wn=D*pi;N=23;b=fir1(N,wn,hanning(N+1));[w,t]=freqz(b,1,512);QX=plot(t,abs(w));set(QX,'LineWidth',2.0)title('汉宁窗');用布莱克曼窗设计低通滤波器的代码:D=str2num(get(handles.edit1,'string')); wn=D*pi;N=23;b=fir1(N,wn,blackman(N+1));[w,t]=freqz(b,1,512);QX=plot(t,abs(w));set(QX,'LineWidth',2.0)title('布莱克曼窗');用凯泽窗设计低通滤波器的代码:D=str2num(get(handles.edit1,'string')); wn=D*pi;N=23;b=fir1(N,wn,kaiser(N+1));[w,t]=freqz(b,1,512);QX=plot(t,abs(w));set(QX,'LineWidth',2.0)title('凯泽窗');。
切比雪夫低通滤波器计算
切比雪夫低通滤波器是数字信号处理中常用的一种滤波器类型,用于对信号进
行滤波处理,去除高频成分。
其设计需要根据滤波器的阶数、截止频率和通带波纹等参数进行计算。
首先,切比雪夫低通滤波器的频率响应特点是在通带内具有波纹,而在截止频
率之后的阻带内频率响应快速下降,因此在设计时需要考虑通带波纹和阻带衰减的要求。
设计切比雪夫低通滤波器的步骤如下:
1. 确定滤波器的阶数:根据滤波器的设计要求,确定所需的滤波器阶数。
阶数
越高,滤波器的性能越好,但计算复杂度也越高。
2. 确定通带波纹和阻带衰减:根据设计要求确定通带波纹和阻带衰减的要求,
这些参数将直接影响滤波器的设计。
3. 计算截止频率:根据设计要求确定滤波器的截止频率,即希望滤波器在该频
率之后起作用。
4. 根据以上参数,利用切比雪夫滤波器的设计公式计算滤波器的传递函数系数。
切比雪夫低通滤波器的设计公式如下:
H(s) = 1 / [1 + ε^2 * C^2(s/s_c)^2n]
其中,H(s)为滤波器的传递函数,ε为通带波纹系数,C为滤波器的阻带衰减,n为滤波器的阶数,s为复频域变量,s_c为滤波器的截止频率。
设计切比雪夫低通滤波器的关键在于确定好滤波器的阶数、通带波纹和阻带衰减,根据设计要求利用设计公式计算滤波器的传递函数系数,从而实现滤波器的设计。
在实际的数字信号处理应用中,切比雪夫低通滤波器常用于需要较高的通带波纹和较快的阻带衰减的场合,可以根据具体的需求进行设计,滤波器的设计参数直接影响滤波器的性能和应用效果,因此设计时需谨慎考虑各个参数的取值。
[Matlab]切⽐雪夫Ⅰ型滤波器设计:低通、⾼通、带通和带阻切⽐雪夫Ⅰ型滤波器特点:1、幅度特性是在⼀个频带内(通带或阻带)范围内具有等波纹特性;2、Ⅰ型在通带范围内是等波纹的,在阻带范围内是单调的。
测试代码:% Cheby1Filter.m% 切⽐雪夫Ⅰ型滤波器的设计%clear;close all;clc;fs = 1000; %Hz 采样频率Ts = 1/fs;N = 1000; %序列长度t = (0:N-1)*Ts;delta_f = 1*fs/N;f1 = 50;f2 = 100;f3 = 200;f4 = 400;x1 = 2*0.5*sin(2*pi*f1*t);x2 = 2*0.5*sin(2*pi*f2*t);x3 = 2*0.5*sin(2*pi*f3*t);x4 = 2*0.5*sin(2*pi*f4*t);x = x1 + x2 + x3 + x4; %待处理信号由四个分量组成X = fftshift(abs(fft(x)))/N;X_angle = fftshift(angle(fft(x)));f = (-N/2:N/2-1)*delta_f;figure(1);subplot(3,1,1);plot(t,x);title('原信号');subplot(3,1,2);plot(f,X);grid on;title('原信号频谱幅度特性');subplot(3,1,3);plot(f,X_angle);title('原信号频谱相位特性');grid on;%设计⼀个切⽐雪夫低通滤波器,要求把50Hz的频率分量保留,其他分量滤掉wp = 55/(fs/2); %通带截⽌频率,取50~100中间的值,并对其归⼀化ws = 90/(fs/2); %阻带截⽌频率,取50~100中间的值,并对其归⼀化alpha_p = 3; %通带允许最⼤衰减为 dbalpha_s = 40;%阻带允许最⼩衰减为 db%获取阶数和截⽌频率[ N1 wc1 ] = cheb1ord( wp , ws , alpha_p , alpha_s);%获得转移函数系数[ b a ] = cheby1(N1,alpha_p,wc1,'low');%滤波filter_lp_s = filter(b,a,x);X_lp_s = fftshift(abs(fft(filter_lp_s)))/N;X_lp_s_angle = fftshift(angle(fft(filter_lp_s)));figure(2);freqz(b,a); %滤波器频谱特性figure(3);subplot(3,1,1);plot(t,filter_lp_s);grid on;title('低通滤波后时域图形');subplot(3,1,2);plot(f,X_lp_s);title('低通滤波后频域幅度特性');subplot(3,1,3);plot(f,X_lp_s_angle);title('低通滤波后频域相位特性');%设计⼀个⾼通滤波器,要求把400Hz的频率分量保留,其他分量滤掉wp = 350/(fs/2); %通带截⽌频率,取200~400中间的值,并对其归⼀化ws = 380/(fs/2); %阻带截⽌频率,取200~400中间的值,并对其归⼀化alpha_p = 3; %通带允许最⼤衰减为 dbalpha_s = 20;%阻带允许最⼩衰减为 db%获取阶数和截⽌频率[ N2 wc2 ] = cheb1ord( wp , ws , alpha_p , alpha_s);%获得转移函数系数[ b a ] = cheby1(N2,alpha_p,wc2,'high');%滤波filter_hp_s = filter(b,a,x);X_hp_s = fftshift(abs(fft(filter_hp_s)))/N;X_hp_s_angle = fftshift(angle(fft(filter_hp_s)));figure(4);freqz(b,a); %滤波器频谱特性figure(5);subplot(3,1,1);plot(t,filter_hp_s);grid on;title('⾼通滤波后时域图形');subplot(3,1,2);plot(f,X_hp_s);title('⾼通滤波后频域幅度特性');subplot(3,1,3);plot(f,X_hp_s_angle);title('⾼通滤波后频域相位特性');%设计⼀个带通滤波器,要求把50Hz和400Hz的频率分量滤掉,其他分量保留wp = [65 385 ] / (fs/2); %通带截⽌频率,50~100、200~400中间各取⼀个值,并对其归⼀化ws = [75 375 ] / (fs/2); %阻带截⽌频率,50~100、200~400中间各取⼀个值,并对其归⼀化alpha_p = 3; %通带允许最⼤衰减为 dbalpha_s = 20;%阻带允许最⼩衰减为 db%获取阶数和截⽌频率[ N3 wn ] = cheb1ord( wp , ws , alpha_p , alpha_s);%获得转移函数系数[ b a ] = cheby1(N3,alpha_p,wn,'bandpass');%滤波filter_bp_s = filter(b,a,x);X_bp_s = fftshift(abs(fft(filter_bp_s)))/N;X_bp_s_angle = fftshift(angle(fft(filter_bp_s)));figure(6);freqz(b,a); %滤波器频谱特性figure(7);subplot(3,1,1);plot(t,filter_bp_s);grid on;title('带通滤波后时域图形');subplot(3,1,2);plot(f,X_bp_s);title('带通滤波后频域幅度特性');subplot(3,1,3);plot(f,X_bp_s_angle);title('带通滤波后频域相位特性');%设计⼀个带阻滤波器,要求把50Hz和400Hz的频率分量保留,其他分量滤掉wp = [65 385 ] / (fs/2); %通带截⽌频率?,50~100、200~400中间各取⼀个值,并对其归⼀化ws = [75 375 ] / (fs/2); %阻带截⽌频率?,50~100、200~400中间各取⼀个值,并对其归⼀化alpha_p = 3; %通带允许最⼤衰减为 dbalpha_s = 20;%阻带允许最⼩衰减为 db%获取阶数和截⽌频率[ N4 wn ] = cheb1ord( wp , ws , alpha_p , alpha_s);%获得转移函数系数[ b a ] = cheby1(N4,alpha_p,wn,'stop');%滤波filter_bs_s = filter(b,a,x);X_bs_s = fftshift(abs(fft(filter_bs_s)))/N;X_bs_s_angle = fftshift(angle(fft(filter_bs_s)));figure(8);freqz(b,a); %滤波器频谱特性figure(9);subplot(3,1,1);plot(t,filter_bs_s);grid on;title('带阻滤波后时域图形');subplot(3,1,2);plot(f,X_bs_s);title('带阻滤波后频域幅度特性');subplot(3,1,3);plot(f,X_bs_s_angle);title('带阻滤波后频域相位特性');效果:原始信号:⽣成的低通滤波器和滤波后的效果:⽣成的⾼通滤波器和滤波后的结果:⽣成的带通滤波器和滤波后的结果:⽣成的带阻滤波器和滤波后的结果:。