滤波器设计fdatool工具及代码设计概要.docx
- 文档编号:16183426
- 上传时间:2023-07-11
- 格式:DOCX
- 页数:33
- 大小:819.37KB
滤波器设计fdatool工具及代码设计概要.docx
《滤波器设计fdatool工具及代码设计概要.docx》由会员分享,可在线阅读,更多相关《滤波器设计fdatool工具及代码设计概要.docx(33页珍藏版)》请在冰点文库上搜索。
滤波器设计fdatool工具及代码设计概要
黎美琪201300800610通信工程2班
实验一基于FDATool的FIR及IIR滤波器设计
一、实验目的:
1.学会使用fdatool设计滤波器
2.分析比较不同滤波器的特性
二、实验条件
Matlab2013bpc机
三、实验过程
知识储备:
使用FDATool设计FIR滤波器的具体步骤
1.1滤波器指标
若需要设计一个16阶的FIR滤波器(h(0=0,给定的参数如下:
(1低通滤波器
注:
阶数问题
这个选项直接影响滤波器的性能,阶数越高,性能越好,但是相应在FPGA实现耗用的资源需要增多。
在这个设置中提供2个选项:
Specifyorder和Minimumorder,Specifyorder是工程师自己确定滤波器的阶数,Minimumorder是让工具自动确定达到期望的频率相应所需要的最小阶数。
(2采样频率Fs为8kHz,滤波器Fpass为3kHz,Fstop为3050hz
(3输入序列位宽为9位(最高位为符号位在此利用MATLAB来完成FIR滤波器系数的确定。
1.2打开MATLAB的FDATool
MATLAB集成了一套功能强大的滤波器设计工具FDATool(FilterDesign&AnalysisTool,可以完成多种滤波器的设计、分析和性能评估。
在MATLAB主命令窗口内键入“fdatool”,打开FDATool程序界面,如图B.2所示。
1.3滤波器设计
FDATool界面左下侧排列了一组工具按钮,其功能分别如下所述:
滤波器转换(TransFormFilter
设置量化参数(SetQuantizationParameters
实现模型(RealizeModel
导入滤波器(ImportFilter
多速率滤波器(MultirateFilter
零极点编辑器(Pole-zeroEditor
设计滤波器(DesignFilter
选择其中的选择DesignFilter按钮,进入设计滤波器界面,进行下列选择,如图B.3所示。
滤波器类型(FilerType为低通(LowPass
设计方法(DesignMethod为FIR/IIR,分别采用Equiripple、Least-squares、Window、Constr.LeastPth-norm、ConstrainedEquiripple、Constr.BandEquiripple(FIR滤波器设计和Butterworth、ChebyshevTypeI、ChebyshevTypeI、Elliptic、Maximallyflat、LeastPth-norm、Constr.LeastPth-norm(IIR滤波器设计。
滤波器阶数(Filterorder定制为15
Fs=8kHz,Fpass=3kHz,Fstop=3050hz
最后单击DesignFilter图标,让MATLAB计算FIR滤波器系数并作相关分析。
其系统函数H(z可用下式来表示:
显然上式可以写成:
即可以看成是一个15阶的FIR滤波器的输出结果经过了一个单位延时单元,所以在FDATool中,把它看成15阶FIR滤波器来计算参数。
1.4滤波器分析
计算完FIR滤波器系数以后,往往需要对设计好的FIR滤波器进行相关的性能分析,以便了解该滤波器是否满足设计要求。
分析操作步骤如下:
选择选择工具栏中“MagnitudeandPhaseResponse”,启动幅、相频比较分析;选择工具栏中的圆图图标,启动零极点位置分析(主要分析滤波器的稳定性,但是通过滤波器基本信息栏也可以直接看滤波器的稳定性。
除此之外,工具栏{}的不同图标还可以对滤波器进
行群延时、相位延时、单位脉冲响应、单位阶跃响应、滤波器的系数的分析(此实验中没有对各方面都展开分析。
在图形的左侧,显示了当下滤波器的基本信息,如:
1.5量化
可以看到,FDATool计算出的值是一个有符号的小数,如果建立的FIR滤波器模型需要一个整数作为滤波器系数,就必须进行量化,并对得到的系数进行归一化。
为此,单击FDATool左下侧的工具按钮进行量化参数设置。
量化参数有三种方式:
双精度、单精度和定点。
(注意:
当使用DSP处理器时,FTR滤波器的系数要量化,量化误差将导致所设计的滤波器形状发生很大的变化;对于IIR滤波器,会改变滤波器的特性,甚至导致滤波器不稳定。
1.6导出滤波器系数
为导出设计好的滤波器系数,选择FDATool菜单的“File”→“Export”命令,打开
Export(导出对话框,选择导出到工作区(Workplace。
这时FIR滤波器系数就存入到一个一维变量Num(名称按照顺序取为a-g中了,不过这时Num中的元素是以小数形式出现的。
对于IIR滤波器,导出得到矩阵SOS(名称按照顺序取为h、k-p和G(名称按照顺序取为
h1、k1-p1。
导出后的数据在workplace中的显示如下:
其中FIR滤波器系数
对于IIR滤波器:
[b,a]=sos2tf(SOS;得到滤波器系统函数的分子分母多项式系数,只是差了一个比例因子k。
K=cumprod(G;k=K(end;
滤波输出结果filteredpWave可以这样求:
filteredpWave=filter(b,a,pWave*k;
导出的数与传输函数的系数的关系
a,b含义,在MATLAB中函数如下公式:
这种用法主要出现在信号处理方向,控制方向上主要使用z,而不是z^-1,这是习惯问题,
都一样。
其次,了解了其具体函数,则它的传递函数就好写了,如下:
h=tf(b,a,0.1,'variable','z^-1';%0.1表示采样时间,你可以根据自己设计的滤波器来设
定。
h表示的传递函数就是上面公式中的H(z。
当然,你也可以用“DiscreteTransferFcn”模块来建立传递函数,由于这个模块是直接以Z的
形式,所以a,b系统应该倒过来写,相信这个你应该理解。
按照上述操作,得到的滤波器设计相关图形如下:
FIR滤波器设计
滤波器幅度、相位响应滤波器零极点图形滤波器单位脉冲响应Equiripple
Least-squares
Window(KaiserBeta=0.5
滤波器幅度、相位响应滤波器零极点图形滤波器单位脉冲响应Constr.LeastPth-norm
ConstrainedEquiripple
Constr.BandEquiripple
IIR滤波器设计
滤波器幅度、相位响应滤波器零极点图形滤波器单位脉冲响应Butterworth(minorder175
ChebyshevTypeI(minorder32
ChebyshevTypeII(minorder32
Elliptic(minorder12
Maximallyflat
LeastxPth-norm、
Constr.LeastPth-norm
虽然以上的IIR滤波器的极点都是在单位圆上,但是上述滤波器都是稳定的,从其基本信息可以看出
图形数据分析:
1.通过观察FIR滤波器的“幅度相位图”及“脉冲响应图”可以发现,脉冲响应关于中点
对称的FIR滤波器无相位失真。
对称的脉冲响应产生了通带内的线性相位关系。
这样,线
性相位关系也保证无相位失真;但是IIR滤波器的相位均是非线性的,即其不能保证无相位
失真。
2.对于给定的滤波器形状,IIR滤波器较FIR滤波器所需要的系数要少。
3.从“零极点图”可以发现,滤波器的系数为N个,对应的有N-1个零点和N-1个极点,
FIR滤波器的极点都位于单位圆内(原点,即所有的FIR滤波器都是稳定的。
而IIR(它是
递归滤波器的极点由分母多项式所确定,极点分布在单位圆内及单位圆上,这意味着不能
保证其稳定性,但是从基本信息处可以看到上面所讨论的几种IIR滤波器是稳定的。
4.通常的几种模拟滤波器的特性:
Butterworth滤波器在通带和阻带都是单调的,意味着
它们在一个方向上平滑变化;ChebyshevTypeI滤波器在阻带内是单调的,但是在通带内是
有波纹的;ChebyshevTypeII滤波器在通带内是单调的,但是在阻带内是有波纹的;Elliptic
滤波器在通带和阻带内都有波纹。
5.对于同样的设计要求,切比雪夫滤波器(minorder32比巴特沃斯滤波器(minorder175
的阶数要低得多。
补充说明:
实验二利用函数法设计FIR及IIR滤波器
一、实验目的
1.熟悉掌握设计滤波器的操作步骤
2.学会用频率响应采样法和窗函数法设计FIR滤波器,并比较其性能
3.学会用单位脉冲响应法和双线性法设计IIR滤波器,并比较其性能
二、实验条件
Matlab2013bpc机
三、实验过程
滤波器指标:
Fs=8000hz;fpass=3000hz;fstop=3050;δs=0.1;δp=0.1
(1窗函数法设计FIR低通滤波器(主要可以参见实验四
设计步骤
1.在过渡带宽度的中间,选择通带边缘频率(Hz:
f1=fpass+(fstop-fpass/2=3025
2.计算Ω1=2*pi*f1/Fs,并将此值代入理想低通滤波器的脉冲响应h1[n]中:
h1[n]=sin(n*Ω1/(n*pi=sin(n*0.75625*pi/(n*pi
3.计算滤波器阻带衰减为
Dbs=|20lg(0.1|=20
通带边缘增益为
Dbp=20lg(1-0.1=-0.91
从表1中选择满足阻带衰减及其他滤波器要求的窗函数—矩形窗,用表中的公式计算所需窗的非零项目数目
N=0.91*Fs/(fstop-fpass=145.6
选择奇数项145,这样脉冲响应完全可以对称,避免了滤波器产生相位失真,对于
|n|<=(N-1/2,设计窗函数w[n]。
表1
4.对于|n|<=(N-1/2,从式h[n]=h1[n]w[n]计算(有限脉冲响应,对于其他n值h[n]=0,此
脉冲响应是非因果的。
5.将脉冲响应右移(N-1/2,确保第一个非零值在n=0处,使此低通滤波器为因果的。
编写代码如下:
%LPFdesign窗函数法
clc;clearall;closeall;
omga_d=3025*pi/4000;%理想低通滤波器的频率
omga=[0:
pi/100:
pi];
N=145;
w1=window(@rectwin,N;%矩形窗
subplot(411;
plot(1:
N,w1;
axis([1N01.1];%取值范围不同,矩形窗的中心位置不同
title('窗函数时域形状';
legend('rectwin';%标注窗函数名称
M=floor(N/2;%M=72
n=1:
M;
%hd=sin(n*omga_d./(n*omga_d*omga_d/pi;
hd=sin(n*omga_d./(n*pi;%理想低通滤波器对应的脉冲响应的右边序列
hdd=[fliplr(hd,1/omga_d,hd];%绘制原脉冲函数图像,关于(N+1/2对称subplot(412;
plot(1:
N,hdd;axis([1N-0.20.45];
title('脉冲函数hd(n';
h_d1=hdd.*w1';%被窗函数截取后的脉冲函数
m=1:
M;
H_d1=2*cos(omga'*m*h_d1(M+2:
N'+h_d1(M+1;%对截取后的脉冲函数做newdtft运算得到H
subplot(413;
plot(omga,H_d1;gridon;
axis([0pi01];
title('窗函数法得滤波器形状H';
subplot(414;
plot(abs(fft(h_d1';
title('fft求得滤波器形状';
图形显示:
虽然矩形窗得到的低通滤波器有较好的特性,但是由于其边缘陡峭,旁瓣出现振铃,且变化较为明显。
(2频率响应采样法设计FIR低通滤波器。
设计原理及滤波器性能分析:
.频率采样法是从频域出发,对给定的理想滤波器的频响进行N点等间隔采样
然后以此Hd(k作为实际FIR滤波器的频率特性采样值H(k,即令:
由DFT定义,可以用这N个频域的采样值H(k来惟一确定FIR的单位脉冲响应h(n,即:
图示如下:
对设计出的滤波器频率响应特性进行分析。
由频域采样定理中的内插公式可以知道,利用这N个频域采样值H(k同样可以求得FIR滤波器的频率响应,这个将逼近理想滤波器的频响。
的内插公式为:
(1式中(w是内插函数:
(2
把(2式带入(1式,化简后可得:
(3
从式(3可以看到,在各频率采样点上,设计的滤波器,实际的频率响应严格地与理想滤波器的频率响应数值相等,即
但是在采样点之间的频率响应是由各采样点的加权内插函数叠加而形成的,因而有一定的逼近误差。
该误差大小取决于理想频率响应的形状,理想频响特性变化越平缓,内插值越接近理想值,逼近误差越小;反之,如果采样点之间的理想频响特性变化越陡,则内插值与理想值之间的误差越大,因而在理想滤波器不连续点的两边,就会产生尖峰,而在通带和阻带就会产生波纹。
线性相位条件:
FIR滤波器的最大优点是严格的线性相位特性。
下面讨论为实现线性相位,在频域内采样得到的Hd(k应满足什么条件。
FIR滤波器具有线性相位的条件是h(n是实序列,且满足
h(n=±h(N-1-n,即h(n关于对称,其中N为滤波器的长度。
以第一类线性相位条件h(n=h(N-1-n(偶对称为基础来推导频域采样Hd(k满足的条件。
理想滤波器的频率响应可以表示为:
(4
为实现第一类线性相位条件,相位函数θ(ω和幅度函数Hg(ω应分别满足:
(5
(6
在w=0~2*pi之间对进行N点等间隔采样,即,将w代入式(4、(5、(6并表示为k的函数,可以得到:
(7
(8
(9
式(8和式(9就是频率采样值Hd(k满足第一类线性相位的条件。
设计步骤:
1.确定希望逼近的理想滤波器的频率响应
2.在频域内对进行k点等间隔采样,利用频率采样设计公式求频率采样值Hd(k,采样间隔△ω=π/k=1/512π,这样在通带内共有c个采样点,分别是k=0,1,c-1。
3.用离散傅里叶逆变换求得要设计的实际滤波器的单位脉冲响应h(n:
4.根据傅里叶变换的定义求得实际滤波器的频率响应,验证是否满足滤波器技术指标的要求,主要验证滤波器的阻带衰减是否能够满足阻带的要求。
Matlab代码中需要用到的函数知识
>>helplinspace
linspaceLinearlyspacedvector.
linspace(X1,X2generatesarowvectorof100linearly
equallyspacedpointsbetweenX1andX2.
linspace(X1,X2,NgeneratesNpointsbetweenX1andX2.
ForN=1,linspacereturnsX2.
编写代码如下:
%LPFdesign频率响应采样法
%待设计滤波器的基本参数
f_p=3000;%所设计滤波器的通带边缘频率
f_s=3050;%阻带边缘频率
Fs=8000;%采样频率%AllinHz
delta_p=0.1;%通带波纹
delta_s=0.1;%阻带波纹
omg_p=2*pi*f_p/Fs;%通带边缘模拟频率转化为数字频率
omg_s=2*pi*f_s/Fs;%阻带边缘模拟频率转化为数字频率
K=512;%理想滤波器长度
M=56;%单位脉冲响应单边长度
C=floor((omg_p+omg_s/2/pi*K;%理想滤波器中有值部分长度?
?
?
Mag=[ones(1,C,zeros(1,K-C];%幅度
phi=linspace(0,pi,K*M/2;%相位,范围为0-pi,间隔为pi/K,线性相位特性omg*M/2H=Mag.*exp(-1j*phi;%|H|*e^j*omg*M/2,待设计的理想滤波器
H=[H,conj(fliplr(H(1:
K-1];%将H转换为因果的
h0=fftshift(real(ifft(H;
h=h0(K+M/2-M:
K+M/2+M;%相移e^j*omg*M/2,时域采样平移M/2个点
subplot(211;
plot(h;%脉冲响应
axis([1120-0.20.8];
title('脉冲函数hd(n';
subplot(212;
plot(abs(fft(h;%所设计的滤波器的形状
title('所设计的滤波器形状';
图像显示:
增加过渡带抽样点,可加大阻带衰减,但是导致过渡带变宽
增加N,使抽样点变密,减小过渡带带宽,但是增加了计算量
优点:
频域直接计算
缺点:
抽样频率只能是2π/N或者π/N的整数倍,截止频率不能任意取值
(3单位脉冲响应法设计IIR滤波器
核心原理:
通过对连续函数ha(t等间隔采样得到离散序列ha(nT。
令h(n=ha(nT,T为采样间隔。
它是一种时域上的转换方法。
设计步骤:
1.由模拟滤波器的传输函数Ha(s求出其对应的模拟冲激响应ha(t
2.对ha(t每T秒进行一次采样,采样时间为t=nT,得到数字脉冲响应h(n=ha(nT
3.由h(n进行z变换可以求出数字滤波器的传输函数H(z
4.将z用ej*Omga替换得到数字滤波器的频率响应H(Omga
编写代码如下:
(用要求的参量得不到需要设计的滤波器,这里更换了参数
%LPFdesign脉冲响应不变法(Butterworth
fp=100;
fs=300;
Rp=0.91;%通带衰减系数
Rs=20;%阻带衰减系数
Fs=1000;
wp=2*pi*fp;
ws=2*pi*fs;
[N,Wn]=buttord(wp,ws,Rp,Rs,'s'%求滤波器所需阶数及截止频率
[B,A]=butter(N,Wn,'s'%计算滤波器传输函数系数
W=0:
pi/100:
pi;
[H,W]=freqs(B,A,W;%滤波器频率响应
%H=20*log10(abs(H;
plot(W,H,gridon;
xlabel('rad';ylabel('幅度/db';
title('所设计的滤波器形状';
axis([0pi01.1];
运行结果
N=3Wn=876.3856
B=1.0e+08*
0006.7311
A=1.0e+08*
0.00000.00000.01546.7311
图形显示:
(4双线性法设计IIR滤波器
设计步骤
1.确定待求通带边缘频率fpass=3000hz,待求阻带边缘频率fstop=3050hz,待求阻带衰减
20db,通带边缘增益-0.91db。
2.用式子Ω=2π*f/Fs把由hz表示的待求边缘频率转化为由弧度表示的数字频率,得到Ω
pass、Ωstop。
3.计算预扭曲模拟频率以避免双线性变换带来的失真。
由w=2Fs*tan(Ω/2求得wpass和
wstop单位是弧度/秒。
4.计算所需滤波器的阶数
5.把wpass带入n阶模拟巴特沃斯滤波器传输函数H(s中,并且对其进行双线性变换s=2Fs*
(z-1/(z+1得到n阶数字传输函数H(z。
6.由H(z求出滤波器实现所需的差分方程。
7.把w=2Fs*tan(Ω/2代入
即可得滤波器的形状|H(Ω|。
编写代码如下:
%LPFdesign双线性变换法(Butterworth
%待设计滤波器的基本参数
fpass=3000;fstop=3050;Fs=8000;%单位hzRs=0.1;Rp=0.1;omg_pass=2*pi*fpass/Fsomg_stop=2*pi*fstop/Fswpass=2*Fs*tan(omg_pass/2%阻带波纹%通带波纹%通带截止频率数字频率%阻带截止频率数字频率,单位radwstop=2*Fs*tan(omg_stop/2%预扭曲模拟频率,单位rad/sn=ceil((log10(1/(Rs^2-1/(2*log10(wstop/wpass%所需滤波器阶数,ceil向上取整omg=0:
pi/100:
pi;H=1./sqrt((2*Fs*tan(omg./2./wpass.^(2*n+1;plot(omg,abs(H;gridon;title('所设计的滤波器形状';axis([0pi01.1];xlabel('数字频率/(rad)';ylabel('幅度';计算结果:
omg_pass=2.3562omg_stop=2.3955wpass=3.8627e+04wstop=4.0880e+04n=41图形显示:
滤波特性较好,通带内没有波纹,边缘较陡峭分析比较1.对比实验一和实验二:
Fdatool直接设计滤波器方便快捷图形也准确;函数法设计滤波器能够表现出滤波器设计的原理,但是操作比较复杂,比较耗时且易出错。
2.对比频率采样法和窗函数法设计滤波器:
频率采样法是从频域出发直接设计滤波器的,而窗函数法是从时域出发设计滤波器的,两种设计方法各有优缺点。
窗函数法设计FIR数字滤波器是傅里叶变换的典型运用,而频率采样法设计的指导思想是频域采样定理及内插公式,其阻带衰减的改善是通过增加过采样点实现的,同时为保证过渡带宽的不变,滤波器的采样点数也要相应增加,计算复杂度也随之成倍增加,这就要求在用频率采样法设计FIR滤波器时,要综合考虑阻带衰减和滤波器长度的要求,从而达到设计的最优化。
3.对比脉冲响应不变法和双线性变换法设计滤波器:
两者均需要以某种模拟滤波器为基础(此实验中选择了巴特沃斯,两者虽然都有较为明确的计算公式,但是高阶的巴特沃斯模拟滤波器的H(s)函数表达式较为复杂,所以一般借助matlab函数解决;双线性变换法的计算较
简单,流程较清晰,且最后得到的滤波器的效果较好。
4.对比所得到的滤波器的性能:
窗函数法设计的滤波器选择性较好,但是通带和阻带内有波纹;频率响应采样法设计的滤波器通带内有波纹,阻带较平滑;脉冲响应不变法设计的滤波器带内没有波纹,衰减较快,阻带较为平滑;双线性变换法设计的滤波器有较好的选择性通带内没有波纹,衰减较快,阻带较为平滑(巴特沃斯特性)。
5.将所得滤波器与要求的参量对比:
所有设计的滤波器大致都能够达到要求。
四、思考学习通过此次实验学会了如何利用fdatool设计滤波器,方法简单操作也很便捷,但是在IIR滤波器系数的计算上花了一点时间理解,而且在导出滤波器的系数时要注意其取名,否则在运行时若取同名的变量其数据会被覆盖。
利用脉
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 滤波器 设计 fdatool 工具 代码 概要