滤波器设计fdatool工具及代码设计详解.docx
- 文档编号:27397602
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:53
- 大小:659.84KB
滤波器设计fdatool工具及代码设计详解.docx
《滤波器设计fdatool工具及代码设计详解.docx》由会员分享,可在线阅读,更多相关《滤波器设计fdatool工具及代码设计详解.docx(53页珍藏版)》请在冰豆网上搜索。
滤波器设计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&Analysis
),可以完成多种滤波器的设计、分析和性能评估。
在Tool
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
Fs=8kHz,Fpass=3kHz
)定制为15
,Fstop=3050hz
最后单击DesignFilter
H(z)可用下式来表示:
图标,让
MATLAB计算
FIR
滤波器系数并作相关分析。
其系统函数
显然上式可以写成:
即可以看成是一个15阶的FIR滤波器的输出结果经过了一个单位延时单元,所以在FDATool
中,把它看成15阶FIR滤波器来计算参数。
1.4滤波器分析
计算完FIR滤波器系数以后,往往需要对设计好的FIR滤波器进行相关的性能分析,以
便了解该滤波器是否满足设计要求。
分析操作步骤如下:
选择选择工具栏中“Magnitudeand
PhaseResponse”,启动幅、相频比较分析;选择工具栏中的圆图图标,启动零极点位置分析(主要分析滤波器的稳定性,但是通过滤波器基本信息栏也可以直接看滤波器的稳定性)。
除此之外,工具栏{}的不同图标还可以对滤波器进
行群延时、相位延时、单位脉冲响应、单位阶跃响应、滤波器的系数的分析(此实验中没有对各方面都展开分析)。
在图形的左侧,显示了当下滤波器的基本信息,如:
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滤波器系数
滤波器名称
滤波器系数
1
2
3
4
5
6
7
8
Equiripple
(a)
-0.179
-0.057
0.086
-0.113
0.114
-0.064
-0.076
0.587
Least-squares(b)
-0.036
0.0131
0.027
-0.067
0.081
-0.043
-0.087
0.59
Window(c)
-0.037
0.0179
0.021
-0.064
0.083
-0.048
-0.081
0.588
Constr.LeastPth-norm
(d)
-0.038
0.017
0.022
-0.064
0.083
-0.049
-0.08
0.587
LeastPth-norm
(e)
0.5342
0.2105
-0.48
-0.255
-0.07
-0.259
-0.102
-0.06
ConstrainedEquiripple
(f)
-0.011
0.0271
0.024
-0.046
0.069
-0.039
-0.083
0.588
Constr.BandEquiripple
(g)
-0.179
-0.057
0.086
-0.113
0.114
-0.064
-0.076
0.587
滤波器名称
滤波器系数
9
10
11
12
13
14
15
16
Equiripple
(a)
0.5875
-0.076
-0.06
0.1142
-0.11
0.0855
-0.057
-0.18
Least-squares(b)
0.5904
-0.087
-0.04
0.0814
-0.07
0.0273
0.0131
-0.04
Window(c)
0.588
-0.081
-0.05
0.0829
-0.06
0.0214
0.0179
-0.04
Constr.LeastPth-norm
(d)
0.5872
-0.08
-0.05
0.0826
-0.06
0.0225
0.017
-0.04
LeastPth-norm
(e)
-0.168
-0.015
-0.08
-0.089
0.008
-0.123
0.0165
0.307
ConstrainedEquiripple
(f)
0.5881
-0.083
-0.04
0.0686
-0.05
0.0245
0.0271
-0.01
Constr.BandEquiripple
(g)
0.5872
-0.076
-0.06
0.1143
-0.11
0.0855
-0.057
-0.18
对于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
II
R滤波器设计
滤波器幅度、相位响应滤波器零极点图形滤波器单位脉冲响应
Butterworth(minorder175)
ChebyshevTypeI(minorder32)
ChebyshevTypeII(minorder32)
Elliptic(minorder12)
Maximallyflat
LeastxPth-norm、
Constr.LeastPth-norm
虽然以上的IIR滤波器的极点都是在单位圆上,但是上述滤波器都是稳定的,从其基本信息可以看出
图形数据分析:
1.通过观察FIR滤波器的“幅度相位图”及“脉冲响应图”可以发现,脉冲响应关于中点对称的FIR滤波器无相位失真。
对称的脉冲响应产生了通带内的线性相位关系。
这样,线
性相位关系也保证无相位失真;但是IIR滤波器的相位均是非线性的,即其不能保证无相位失真。
FIR
2.对于给定的滤波器形状,IIR滤波器较FIR滤波器所需要的系数要少。
3.从“零极点图”可以发现,滤波器的系数为N个,对应的有N-1个零点和
滤波器的极点都位于单位圆内(原点),即所有的FIR滤波器都是稳定的。
而
N-1个极点,
IIR(它是
递归滤波器)的极点由分母多项式所确定,极点分布在单位圆内及单位圆上,这意味着不能
保证其稳定性,但是从基本信息处可以看到上面所讨论的几种IIR滤波器是稳定的。
4.通常的几种模拟滤波器的特性:
Butterworth
滤波器在通带和阻带都是单调的,意味着
它们在一个方向上平滑变化;
ChebyshevTypeI
滤波器在阻带内是单调的,但是在通带内是
有波纹的;ChebyshevTypeII
滤波器在通带内是单调的,但是在阻带内是有波纹的;Elliptic
滤波器在通带和阻带内都有波纹。
5.
对于同样的设计要求,切比雪夫滤波器(minorder32)比巴特沃斯滤波器(minorder175)
的阶数要低得多。
补充说明:
FIR和IIR比较小结
FIR滤波器
IIR滤波器
H(n)有限长
H(n)无限长
极点固定在原点
极点位于Z平面任意位置
滤波器阶次高
滤波器阶次低
可严格的线性相位
非线性相位
一般采用非递归结构
递归结构
可以用FFT计算
不能用FFT计算
设计借助于计算机
可用模拟滤波器设计
可设计各种幅频特性和相频特性的滤波器
可用于设计规格化的选频滤波器
实验二利用函数法设计FIR及IIR滤波器
一、实验目的
1.熟悉掌握设计滤波器的操作步骤
2.学会用频率响应采样法和窗函数法设计
3.学会用单位脉冲响应法和双线性法设计
FIR
IIR
滤波器,并比较其性能
滤波器,并比较其性能
二、实验条件
Matlab2013b
pc机
三、实验过程
滤波器指标:
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]。
4.对于|n|<=(N-1)/2,从式
h[n]=h1[n]w[n]
表1
计算(有限)脉冲响应,对于其他
n值
h[n]=0,此
脉冲响应是非因果的。
5.将脉冲响应右移
(N-1)/2,确保第一个非零值在
n=0
处,使此低通滤波器为因果的。
编写代码如下:
%LPFdesign
窗函数法
clc;clear
all;close
all
;
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,X2)generatesarowvectorof100linearly
equallyspacedpointsbetweenX1andX2.
linspace(X1,X2,N)generatesNpointsbetweenX1andX2.
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/2
H=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^
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 滤波器 设计 fdatool 工具 代码 详解