用Matlab设计FIR滤波器的三种方法

合集下载

使用MATLAB设计FIR滤波器

使用MATLAB设计FIR滤波器

使⽤MATLAB设计FIR滤波器1. 采⽤fir1函数设计,fir1函数可以设计低通、带通、⾼通、带阻等多种类型的具有严格线性相位特性的FIR滤波器。

语法形式:b = fir1(n, wn)b = fir1(n, wn, ‘ftype’)b = fir1(n, wn, ‘ftype’, window)b = fir1(n, wn, ‘ftype’, window, ‘noscale’)参数的意义及作⽤:b:返回的FIR滤波器单位脉冲响应,脉冲响应为偶对称,长度为n+1;n:滤波器的介数;wn:滤波器的截⽌频率,取值范围为0<wn<1,1对应信号采样频率⼀半。

如果wn是单个数值,且ftype参数为low,则表⽰设计截⽌频率为wn的低通滤波器,如果ftype参数为high,则表⽰设计截⽌频率为wn的⾼通滤波器;如果wn是有两个数组成的向量[wn1wn2],ftype为stop,则表⽰设计带阻滤波器,ftype为bandpass,则表⽰设计带通滤波器;如果wn是由多个数组成的向量,则根据ftype的值设计多个通带或阻带范围的滤波器,ftype为DC-1,表⽰设计的第⼀个频带为通带,ftype为DC-0,表⽰设计的第⼀个频带为阻带;window:指定使⽤的窗函数,默认为海明窗;noscale:指定是否归⼀化滤波器的幅度。

⽰例:N=41; %滤波器长度fs=2000; %采样频率%各种滤波器的特征频率fc_lpf=200;fc_hpf=200;fp_bandpass=[200 400];fc_stop=[200 400];%以采样频率的⼀半,对频率进⾏归⼀化处理wn_lpf=fc_lpf*2/fs;wn_hpf=fc_hpf*2/fs;wn_bandpass=fp_bandpass*2/fs;wn_stop=fc_stop*2/fs;%采⽤fir1函数设计FIR滤波器b_lpf=fir1(N-1,wn_lpf);b_hpf=fir1(N-1,wn_hpf,'high');b_bandpass=fir1(N-1,wn_bandpass,'bandpass');b_stop=fir1(N-1,wn_stop,'stop');%求滤波器的幅频响应m_lpf=20*log(abs(fft(b_lpf)))/log(10);m_hpf=20*log(abs(fft(b_hpf)))/log(10);m_bandpass=20*log(abs(fft(b_bandpass)))/log(10);m_stop=20*log(abs(fft(b_stop)))/log(10);%设置幅频响应的横坐标单位为Hzx_f=0:(fs/length(m_lpf)):fs/2;%绘制单位脉冲响应%绘制单位脉冲响应subplot(421);stem(b_lpf);xlabel('n');ylabel('h(n)');subplot(423);stem(b_hpf);xlabel('n');ylabel('h(n)');subplot(425);stem(b_bandpass);xlabel('n');ylabel('h(n)');subplot(427);stem(b_stop);xlabel('n');ylabel('h(n)');%绘制幅频响应曲线subplot(422);plot(x_f,m_lpf(1:length(x_f)));xlabel('频率(Hz)','fontsize',8);ylabel('幅度(dB)','fontsize',8);subplot(424);plot(x_f,m_hpf(1:length(x_f)));xlabel('频率(Hz)','fontsize',8);ylabel('幅度(dB)','fontsize',8);subplot(426);plot(x_f,m_bandpass(1:length(x_f)));xlabel('频率(Hz)','fontsize',8);ylabel('幅度(dB)','fontsize',8);subplot(428);plot(x_f,m_stop(1:length(x_f)));xlabel('频率(Hz)','fontsize',8);ylabel('幅度(dB)','fontsize',8);2. 采⽤fir2函数设计,函数算法是:⾸先根据要求的幅频响应向量形式进⾏插值,然后进⾏傅⾥叶变换得到理想滤波器的单位脉冲响应,最后利⽤窗函数对理想滤波器的单位脉冲响应激进型截断处理,由此得到FIR滤波器系数。

实验3 用MATLAB窗函数法设计FIR滤波器

实验3 用MATLAB窗函数法设计FIR滤波器

实验10 用MATLAB 窗函数法设计FIR 滤波器一、实验目的㈠、学习用MA TLAB 语言窗函数法编写简单的FIR 数字滤波器设计程序。

㈡、实现设计的FIR 数字滤波器,对信号进行实时处理。

二、实验原理㈠、运用窗函数法设计FIR 数字滤波器与IIR 滤波器相比,FIR 滤波器在保证幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性。

设FIR 滤波器单位脉冲响应)(n h 长度为N ,其系统函数)(z H 为∑-=-=10)()(N n n zn h z H)(z H 是1-z 的)1(-N 次多项式,它在z 平面上有)1(-N 个零点,原点0=z 是)1(-N 阶重极点。

因此,)(z H 永远是稳定的。

稳定和线性相位特性是FIR 滤波器突出的优点。

FIR 滤波器的设计任务是选择有限长度的)(n h ,使传输函数)(ωj e H 满足技术要求。

主要设计方法有窗函数法、频率采样法和切比雪夫等波纹逼近法。

本实验主要介绍用窗函数法设计FIR 数字滤波器。

图7-10-1 例1 带通FIR 滤波器特性㈡、 用MATLAB 语言设计FIR 数字滤波器例1:设计一个24阶FIR 带通滤波器,通带为0.35<ω<0.65。

其程序如下b=fir1(48,[0.35 0.65]);freqz(b,1,512)可得到如图7-10-1 所示的带通FIR滤波器特性。

由程序可知,该滤波器采用了缺省的Hamming窗。

例2:设计一个34阶的高通FIR滤波器,截止频率为0.48,并使用具有30dB波纹的Chebyshev窗。

其程序如下Window=chebwin(35,30);b=fir1(34,0.48,'high',Window);freqz(b,1,512)可得到如图7-10-2 所示的高通FIR滤波器特性。

图7-10-2 例2 高通FIR滤波器特性例3:设计一个30阶的低通FIR滤波器,使之与期望频率特性相近,其程序如下 f=[0 0.6 0.6 1];m=[1 1 0 0];b=fir2(30,f,m);[h,w]=freqz(b,1,128);plot(f,m,w/pi,abs(h))结果如图7-10-3所示。

基于Matlab的FIR滤波器设计与实现

基于Matlab的FIR滤波器设计与实现

基于Matlab的FIR滤波器设计与实现⼀、摘要 前⾯⼀篇⽂章介绍了通过FDATool⼯具箱实现滤波器的设计,见“”,这⾥通过⼏个例⼦说明采⽤Matlab语⾔设计FIR滤波器的过程。

⼆、实验平台 Matlab7.1三、实验原理 以低通滤波器为例,其常⽤的设计指标有:1. 通带边缘频率f p(数字频率为Ωp)2. 阻带边缘频率f st (数字频率为Ωst)3. 通带内最⼤纹波衰减δp=-20log10(1-αp),单位为 dB4. 阻带最⼩衰减αs=-20log10(αs),单位为 dB5. 阻带起伏αs6. 通带峰值起伏αp 其中,以1、2、3、4条最为常⽤。

5、6条在程序中估算滤波器阶数等参数时会⽤到。

数字频率 = 模拟频率/采样频率四、实例分析例1 ⽤凯塞窗设计⼀FIR低通滤波器,通带边界频率Ωp=0.3pi,阻带边界频率Ωs=0.5pi,阻带衰减δs不⼩于50dB。

⽅法⼀:⼿动计算滤波器阶数N和β值,之后在通过程序设计出滤波器。

第⼀步:通过过渡带宽度和阻带衰减,计算滤波器的阶数B和β值。

第⼆步:通过程序设计滤波器。

程序如下:b = fir1(29,0.4,kaiser(30,4.55));[h1,w1]=freqz(b,1);plot(w1/pi,20*log10(abs(h1)));axis([0,1,-80,10]);grid;xlabel('归⼀化频率/p') ;ylabel('幅度/dB') ;波形如下:⽅法⼆:采⽤[n,Wn,beta,ftype] = kaiserord(f,a,dev)函数来估计滤波器阶数等,得到凯塞窗滤波器。

这⾥的函数kaiserord(f,a,dev)或者kaiserord(f,a,dev,f s): f为对应的频率,f s为采样频率;当f⽤数字频率表⽰时,f s则不需要写。

a=[1 0]为由f指定的各个频带上的幅值向量,⼀般只有0和1表⽰;a和f长度关系为(2*a的长度)- 2=(f的长度) devs=[0.05 10^(-2.5)]⽤于指定各个频带输出滤波器的频率响应与其期望幅值之间的最⼤输出误差或偏差,长度与a相等,计算公式:阻带衰减误差=αs,通带衰减误差=αp,可有滤波器指标中的3、4条得到。

完整版使用MATLAB设计ISE中FIR滤波器系数方法

完整版使用MATLAB设计ISE中FIR滤波器系数方法

使用 MATLAB 设计 ISE中 FIR 滤波器系数的方法
1、翻开 MATLAB,在命令行窗口输入“fdatool”,翻开“Filter Designer& Analysis Tool”工具。

以下列图所示:
2、因为 FPGA中滤波器的系数需要为整数,所以需要在此处将系数设置为“Fixed
-point ”种类。

点击上图中红色方框内的按钮,在新出现的页面中将“ Filter arithmetic ”设置为“ Fixed -point ”。

设置达成后以下列图所示:
3、点击上图中红色方框内的按钮,进入滤波器参数设置页面,在此中设置采样
频次( Fs)、通带频次( Fpass)、阻带频次( Fstop )以及阻带衰减( Astop )等参数,并按最下边的“ Design Filter”按钮生成滤波器系数。

以下列图所示,采样频次为 62MHz,通带频次为 2MHz,阻带频次为 4MHz,阻带衰减为 -80dB。

4、而后导出 coe 文件,点击下列图方框中的按钮即可导出coe 文件:
5、在 ISE 中新建一个 FIR 滤波器 IP 核,在第一页设置中将“ Select Source ”改为“ COE File ”,而后在下边选择上一步生成的 coe 文件即可。

用MAtlab实现FIR数字滤波器的设计

用MAtlab实现FIR数字滤波器的设计

设计方法
• 一、窗函数设计法 • 二、频率抽样设计法 • 三、最小二乘逼近设计法
FIR 数 字 滤 波 器 的 文 件
一、fir1.m
• 本文件采用窗函数法设计FIR数字滤波器,其调用格式是
• 1)b=fir1(N ,W c)
• 2)b=fir1(N,W c ,’high’) • 3)b=fir1(N,W c ,’stop’)
实践课题
FIR 数 字 滤 波 器 的 设 计
实践目的


通过实践加深对Matlab软件的认识。 能熟练应用并基本掌握Matlab软件, 通过实践对课本以外的内容有初步的 了解。 通过设计FIR数字滤波器,对滤波器 的功能和原理有初步的认识和了解。
实践课题简介
在数字信号处理的许多领域中, 如图像处理、数字通信等领域,常 常要求滤波器具有线性相位。FIR数 字滤波器的最大优点就是容易设计 成线性相位特性,而且它的单位冲 激响应是有限长的,所以它永远是 稳定的。

Hale Waihona Puke 上式中N为滤波器的阶次,W c是通带截止频率,其值在0~1之间, 1对应采样频率的一半,b是设计好的滤波器系数(单位冲激响应序 列)其长度为N+1。
对于格式(1)若W c是一标量,则可用来设计低通滤波器;若W c 是 的向量,则用来设计带通滤波器。 格式(2)用来设计高通滤波器。 格式(3)用来设计带阻滤波器。
部分滤波器的例子(频率抽样法)

部分滤波器的例子(最小二乘逼近设计法)

Fircls1设计的低通滤波器,归一化截止频率 为0.3,通带波纹为0.02,阻带波纹为0.008。
实践总结

通过这次实践课题的设计与制作,使我 对Matlab这个软件有了进一步的了解,并且 加深了课本上的知识。与此同时,使我对 滤波器有了初步的认识。提高了我的理解 以及分析能力,理论和实践相结合,不仅 巩固了我的理论知识,同时更提高了我的 实践能力,使我受益匪浅。

matlab用布莱克曼窗设计fir滤波器代码

matlab用布莱克曼窗设计fir滤波器代码

matlab用布莱克曼窗设计fir滤波器代码如何使用Matlab设计带有布莱克曼窗的FIR滤波器。

布莱克曼窗是一种用于设计数字滤波器的常见窗函数之一。

它具有非常好的频域特性,可以用于实现各种滤波器,比如低通、高通、带通、带阻等。

在本文中,我们将详细介绍如何使用Matlab来设计带有布莱克曼窗的FIR 滤波器。

步骤1:确定设计规格在设计FIR滤波器之前,我们首先需要确定滤波器的一些规格,如滤波器的类型(低通、高通等)、截止频率、阶数等。

这些规格将决定最终滤波器的性能。

假设我们要设计一个低通滤波器,截止频率为0.2,阶数为50。

步骤2:计算滤波器系数使用Matlab的fir1函数可以计算出FIR滤波器的系数。

该函数的使用语法如下:h = fir1(N, Wn, window)其中,N表示滤波器的阶数,Wn表示归一化的截止频率,window表示所采用的窗函数。

对于布莱克曼窗,我们可以使用matlab中的blackman函数来生成窗函数:window = blackman(N+1)在这里,我们需要注意一个细节:由于Matlab的fir1函数使用的是双边频率表示法,而我们通常使用的是单边频率表示法。

因此,我们需要将截止频率进行一些处理,将其从正常范围[0, 0.5]映射到[-0.5, 0.5]上。

Wn = 2 * 0.2完成上述计算后,我们可以编写Matlab代码如下:N = 50;Wn = 2 * 0.2;window = blackman(N+1);h = fir1(N, Wn, window);步骤3:绘制滤波器的频率响应为了验证我们设计的滤波器效果,我们可以绘制其频率响应。

使用freqz 函数可以绘制滤波器的幅频特性:freqz(h,1)上述代码将绘制出滤波器的振幅响应和相位响应。

步骤4:应用滤波器完成滤波器的设计后,我们可以将其应用于信号上。

假设我们有一个需要滤波的信号x,我们可以使用filter函数实现滤波效果:y = filter(h, 1, x)其中,x表示输入信号,y表示输出信号。

matlab 信号过fir数字滤波器设计

matlab 信号过fir数字滤波器设计

一、概述Matlab 是一种用于算法开发、数据分析和可视化的高级技术计算语言和交互式环境。

在信号处理领域,Matlab 是一种非常强大的工具,可以用来设计和实现数字滤波器。

本文将重点介绍如何使用 Matlab 过FIR (Finite Impulse Response) 数字滤波器设计。

二、FIR 数字滤波器概述FIR 数字滤波器是一种常见的数字滤波器,它的特点是其单位脉冲响应有限,并且没有反馈。

FIR 滤波器的频率响应可以通过其线性相位特性来描述,因此在许多应用中非常有用。

三、Matlab 中的 FIR 数字滤波器设计工具Matlab 中提供了许多用于数字滤波器设计的工具,其中包括 fdatool 和 fir1 函数。

1. fdatoolfdatool 是 Matlab 中的一个交互式工具,可以帮助用户设计各种类型的数字滤波器。

用户可以通过图形界面选择滤波器类型、滤波器阶数、截止频率等参数,并实时查看滤波器的频率响应和单位脉冲响应。

使用 fdatool 可以快速方便地设计出所需的 FIR 数字滤波器。

2. fir1 函数fir1 函数是 Matlab 中用于设计标准的低通、高通、带通和带阻 FIR数字滤波器的函数。

用户可以通过指定滤波器类型、截止频率、滤波器阶数等参数来调用 fir1 函数,从而得到所需的数字滤波器的系数。

四、利用 Matlab 设计 FIR 数字滤波器的步骤1. 确定滤波器类型首先要确定所需的数字滤波器的类型,包括低通滤波器、高通滤波器、带通滤波器和带阻滤波器。

2. 确定滤波器的频率特性根据具体的应用需求,确定滤波器的截止频率、通带和阻带的大小,以及过渡带的宽度等参数。

3. 计算滤波器的系数根据所需的滤波器类型、频率特性和滤波器阶数等参数,使用 fdaool 工具或 fir1 函数计算出滤波器的系数。

4. 应用滤波器将得到的滤波器系数应用到需要滤波的信号上,即可得到滤波后的信号。

matlabfir滤波器设计

matlabfir滤波器设计

matlabfir滤波器设计由于滤波器设计的复杂性,在matlab中完成滤波器设计过程可以减少大量的计算工作,下面将介绍在matlab中的FIR滤波器的设计。

一、matlab入口1. matlab工作环境:(1)安装matlab软件,在matlab中运行“dspstart”,启动数字信号处理的工作环境,包括了一些常用处理的函数和示例程序,在这种环境下可以进行滤波器设计的研究。

(2)matlab可以完成离散时间信号处理,因此,滤波器的设计需要在离散时间信号领域完成,即用离散时间信号的算法来完成滤波器设计。

2. matlab工具箱:(1)安装滤波器设计工具箱,这是一个专门用于滤波器设计的matlab库,包括了四种基本滤波器:抗谐波滤波器(notched filter),低通滤波器(low pass filter),带阻滤波器(band stop filter),以及带通滤波器(band pass filter)。

(2)安装滤波器设计高级工具箱,这是一个高级的matlab 库,可以支持滤波器的更复杂的设计,包括滤波器的参数优化,非线性滤波器,以及多种滤波器结构的数字滤波器。

3. matlab辅助性的工具:(1)安装滤波器设计助手,这是一个滤波器设计的可视化工具,可以帮助滤波器的初学者快速上手,了解滤波器设计的基本思想,并运行滤波器的例子及示例程序。

(2)安装滤波器设计指南,这是一个matlab脚本文件,可以帮助滤波器的更高级的使用者了解滤波器设计的原理,以及各种滤波器的不同之处,可以大大提高滤波器的设计效率。

二、 matlab 滤波器设计思路1. FIR滤波器的设计:(1)首先要明确滤波器的工作频率范围,记录滤波器的输入信号精度以及输出精度。

(2)设计滤波器的类型,选择适用于该频率范围内的滤波器类型,如低通滤波器,带阻滤波器等。

(3)定义滤波器的功率频谱,根据滤波器的类型,定义滤波器的功率频谱,包括最大值,超调因数以及滤波器的边带幅度。

基于MATLAB的FIR滤波器的设计

基于MATLAB的FIR滤波器的设计
线性相位 特性 ,且 可通过参 数来 改变 其主瓣 宽度 和旁瓣 衰减 。提出基于窗函数法设计滤波器 ,加入信号源 ,利
用F T o设计和分析模块 电路 ,经过S h k DA o l i n 仿真 ,对其进行时域 、频域 分析和滤波 。实验结果表明, 计 mu 本设
方法能够 有效 的滤除 无用信号 , 直观 简便 , 高了信号的提取效果 。 提
【] 王蔚 . 4 MAT A L B环境 下 的数字 滤波 器设 计及其 应用 【 . 州 : 州大学 ,0 23 — 8 D1 苏 苏 20 : 3 . 6
图 3滤 波 前 信 号 源 波 形
【] CO 1 E J G a b u M , n J H . 9 , r m s Y e , b O j Li 1 91 F O
2 1 年 8月 01 第 8期
电 子 测 试
EL EC T RON I C T EST
Aug. 2011 No8 .
基 于 MAT A L B的F R滤 波 器 的设 计 ★ I
段佳佳 ,樊龙龙 ,张波涛
( 中北大学 信息探测与处理技术研 究所 太原 0 0 5 ) 3 0 1 摘要 :基于MA L B信号处理工具 箱 ,设计一种 滤波器 ,针对 信号的分离和 滤除 ,要求有 良好的幅频特 和 TA
幅频特性为 l e I 1 且无相移的理想带通滤波器 H( ) , =
图2滤 波器 幅频特性
的 响应 HaP 表 频率 ( ) 达式为 :
, 『 、 w
从图 2中来看,对于 0 z 10 H , 1H 到 40 H H 到 00 z 40 z 2 00 z
I P , ll 一 1 , ≤W≤ ×
[】 M o a d M o h a i i h lM a i .M AT AB 与 3 h n k t r, c e M re L

MATLAB仿真实现FIR滤波器设计(采用频率抽样法)

MATLAB仿真实现FIR滤波器设计(采用频率抽样法)

数字信号处理 课程实验报告实验指导教师:黄启宏实验名称 MATLAB 仿真实现FIR 滤波器设计(采用频率抽样法)专业、班级电子与通信工程姓 名张帅实验地点 仿古楼301实验日期2013.11.10一、实验内容采用频率抽样法设计FIR 滤波器设计。

二、实验目的(1)掌握频率抽样法设计FIR DF 方法;(2)掌握一类线性相位和二类线性相位适用的原则; (3)在实验的过程中发现影响设计滤波器的性能的因素。

三、实验原理(1)若频率响应是()jwd He ,是连续频率ω的周期函数,对其抽样,使每一个周期内有N 个抽样值,即22()()|()k jk jwNd d d w kNH k H e H eππ===根据N为偶数还是奇数,采用一类线性相位还是二类线性相位,从而指定()d H k 。

(2)由指定的()d H k 构成所设计的滤波器的转移函数()H z ,从而设计出滤波器的频率响应()jw d H e 。

四、涉及实验的相关情况介绍(包含使用软件或实验设备等情况)一台安装MATLAB 软件的电脑五、实验记录程序、相关的图形、相关数据记录及分析)((1)低通%设计低通滤波器,采用第一类线性相位;clearN=33;%输入频率采样后的Hk序列;Hk=[ones(1,9) zeros(1,16) ones(1,8)];k=0:N-1;hn=real(ifft(Hk.*exp(-j*pi*(N-1)*k/N)));%HK逆快速傅里叶变换求出hn;[H w]=freqz(hn,1);%求频率响应;subplot(121)%绘图;stem(k,Hk,'.');axis([0 32 0 1.2]);grid on;xlabel('k')ylabel('|Hk|')subplot(122)plot(w/pi,20*log10(abs(H)),'k-');axis([0 1 -60 10]);grid on;xlabel('归一化频率/\pi')ylabel('幅度/dB')(2)高通%设计高通滤波器;clearN=33;Hk=[zeros(1,8) ones(1,18) zeros(1,7)];%输入频率采样后的Hk序列;k=0:N-1;hn=real(ifft(Hk.*exp(-j*pi*(N-1)*k/N)));%HK逆快速傅里叶变换求出hn;[H w]=freqz(hn,1);%求频率响应;subplot(121)%绘图;stem(k,Hk,'.');axis([0 32 0 1.2]);grid on;xlabel('k')ylabel('|Hk|')subplot(122)plot(w/pi,20*log10(abs(H)));axis([0 1 -60 10]);grid on;xlabel('归一化频率/\pi')ylabel('幅度/dB')(3)带通%设计带通滤波器,采用第一类线性相位;clearN=33;Hk=[zeros(1,4) ones(1,6) zeros(1,13) ones(1,6) zeros(1,4)];%输入频率采样后的Hk序列;k=0:N-1;hn=real(ifft(Hk.*exp(-j*pi*(N-1)*k/N)));%HK逆快速傅里叶变换求出hn;[H w]=freqz(hn,1);%求频率响应;subplot(121)%绘图;stem(k,Hk,'.');axis([0 32 0 1.2]);grid on;xlabel('k')ylabel('|Hk|')subplot(122)plot(w/pi,20*log10(abs(H)),'k-');axis([0 1 -60 10]);grid on;xlabel('归一化频率/\pi')ylabel('幅度/dB')(4)带阻%书本7.2,P357;设计带阻滤波器;clearN=33;Hk=[ones(1,3) zeros(1,3) ones(1,20) zeros(1,2) ones(1,5)];%输入频率采样后的Hk序列;k=0:N-1;hn=real(ifft(Hk.*exp(-j*pi*(N-1)*k/N)));%HK逆快速傅里叶变换求出hn;[H w]=freqz(hn,1);%求频率响应;subplot(121)%绘图;stem(k,Hk,'.');axis([0 32 0 1.2]);grid on;xlabel('k')ylabel('|Hk|')subplot(122)plot(w/pi,20*log10(abs(H)));axis([0 1 -10 1]);grid on;xlabel('归一化频率/\pi')ylabel('幅度/dB')六、实验总结01020300.20.40.60.81k|H k |0.51-60-50-40-30-20-1010归一化频率/幅度/d B(低通)01020300.20.40.60.81k|H k |0.51-60-50-40-30-20-1010归一化频率/π幅度/d B(过渡带增宽低通)02040600.20.40.60.81k|H k |0.51-60-50-40-30-20-1010归一化频率/π幅度/d B(增加采样点数低通)01020300.20.40.60.81k|H k |0.51-60-50-40-30-20-1010归一化频率/幅度/d B(高通)01020300.20.40.60.81k|H k |0.51-60-50-40-30-20-1010归一化频率/π幅度/d B(带通)01020300.20.40.60.81k|H k |0.51-10-9-8-7-6-5-4-3-2-101归一化频率/π幅度/d B(带阻)由上面图例得到的结论:(1)在总的采样点不变的前提下,过渡带的采样值不同直接影响到滤波器的频率特性,在取得最优的采样点时,最小阻带衰减最大。

用MATLAB设计FIR数字滤波器

用MATLAB设计FIR数字滤波器

实验八 用MATLAB 设计FIR 数字滤波器(二)一、实验目旳:1、加深对窗函数法设计FIR 数字滤波器旳基本原理旳理解。

2、学习用MATLAB 语言旳窗函数法编写设计FIR 数字滤波器旳程序。

3、理解MATLAB 语言有关窗函数法设计FIR 数字滤波器旳常用函数用法。

二、实验原理:1、用窗函数法设计FIR 数字滤波器 FIR 数字滤波器旳系统函数为N-1-n n=0H(z)=h(n)z ∑这个公式也可以当作是离散LSI 系统旳系统函数M-m -1-2-mmm=0012m N -1-2-k-k12k k k=1bz b +b z +b z ++b z Y(z)b(z)H(z)====X(z)a(z)1+a z +a z ++a z1+a z ∑∑ 分母a 0为1,其他a k 全都为0时旳一种特例。

由于极点所有集中在零点,稳定和线性相位特性是FIR 滤波器旳突出长处,因此在实际中广泛使用。

FIR 滤波器旳设计任务是选择有限长度旳h(n),使传播函数H(e j ω)满足技术规定。

重要设计措施有窗函数法、频率采样法和切比雪夫等波纹逼近法等。

本实验重要简介窗函数法。

用窗函数法设计FIR 数字滤波器旳基本环节如下:(1)根据过渡带和阻带衰减指标选择窗函数旳类型,估算滤波器旳阶数N 。

(2)由数字滤波器旳抱负频率响应H(e j ω)求出其单位脉冲响应h d (n)。

可用自定义函数ideal_lp实现抱负数字低通滤波器单位脉冲响应旳求解。

程序清单如下:function hd=ideal_lp(wc,N) %点0到N-1之间旳抱负脉冲响应%wc=截止频率(弧度)%N=抱负滤波器旳长度tao=(N-1)/2;n=[0:(N-1)];m=n-tao+eps; %加一种小数以避免0作除数hd=sin(wc*m)./(pi*m);其他选频滤波器可以由低通频响特性合成。

如一种通带在ωc1~ωc2之间旳带通滤波器在给定N值旳条件下,可以用下列程序实现:Hd=ideal_lp(wc2,N)-ideal_lp(wc1,N)(3)计算数字滤波器旳单位冲激响应h(n)=w(n)h d(n)。

FIR数字滤波器设计及MATLAB使用.

FIR数字滤波器设计及MATLAB使用.

数字信号处理课程设计《数字信号处理》课程设计报告FIR数字滤波器设计及MATLAB实现专业:通信工程班级:通信1101班组次:第9组姓名及学号:姓名及学号:目录一、设计目的 (3)二、设计任务 (3)三、设计原理 (3)3.1窗函数法 (3)3.2频率采样法 (4)3.3最优化设计 (5)3.3.1等波纹切比雪夫逼近准则 (5)3.3.2仿真函数 (6)四、设计过程 (7)五、收获与体会 (13)参考文献 (13)FIR数字滤波器设计及MATLAB实现一、设计目的FIR滤波器:有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。

因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。

滤波器设计是根据给定滤波器的频率特性,求得满足该特性的传输函数。

二、设计任务H e满足一定FIR滤波器设计的任务是选择有限长度的()h n,使传输函数()jw的幅度特性和线性相位要求。

由于FIR滤波器很容易实现严格的线性相位,所以FIR 数字滤波器设计的核心思想是求出有限的脉冲响应来逼近给定的频率响应。

设计过程一般包括以下三个基本问题:(1)根据实际要求确定数字滤波器性能指标;(2)用一个因果稳定的系统函数去逼近这个理想性能指标;(3)用一个有限精度的运算去实现这个传输函数。

三、设计原理H e满足一定FIR滤波器设计的任务是选择有限长度的()h n,使传输函数()jw的幅度特性和线性相位要求。

由于FIR滤波器很容易实现严格的线性相位,所以FIR数字滤波器设计的核心思想是求出有限的脉冲响应来逼近给定的频率响应。

设计过程一般包括以下三个基本问题:(1)根据实际要求确定数字滤波器性能指标;(2)用一个因果稳定的系统函数去逼近这个理想性能指标;(3)用一个有限精度的运算去实现这个传输函数。

3.1窗函数法设计FIR数字滤波器的最简单的方法是窗函数法,通常也称之为傅立叶级数法。

Matlab中的滤波器设计方法详解

Matlab中的滤波器设计方法详解

Matlab中的滤波器设计方法详解滤波器在信号处理中起着至关重要的作用,能够对信号进行去噪、去除干扰、增强所需频谱等操作。

Matlab作为一种强大的数学计算工具,提供了丰富的滤波器设计方法。

本文将详细介绍Matlab中常用的滤波器设计方法,包括FIR和IIR滤波器的设计原理和实现步骤。

一、FIR滤波器的设计方法FIR滤波器全称为有限脉冲响应滤波器,其特点是具有线性相位和稳定性。

在Matlab中,常用的FIR滤波器设计方法有窗函数法、最小二乘法和频率抽取法。

1. 窗函数法窗函数法是最简单直观的FIR滤波器设计方法。

它的基本思想是,在频域上用一个窗函数乘以理想滤波器的频率响应,再进行频域到时域的转换,得到滤波器的冲激响应。

常用的窗函数有矩形窗、汉宁窗、汉明窗等。

Matlab中,我们可以使用fir1函数进行窗函数法滤波器设计。

该函数的输入参数包括滤波器阶数、归一化截止频率和窗函数类型。

通过设计不同阶数和不同窗函数的滤波器,可以得到不同性能的滤波器。

2. 最小二乘法最小二乘法是一种优化方法,通过最小化滤波器的输出与目标响应之间的均方误差来设计滤波器。

在Matlab中,我们可以使用fir2函数进行最小二乘法滤波器设计。

该函数的输入参数包括滤波器阶数、频率向量和响应向量。

通过调整频率向量和响应向量,可以实现对滤波器的精确控制。

3. 频率抽取法频率抽取法是一种有效的FIR滤波器设计方法,能够实现对特定频带的信号进行滤波。

在Matlab中,我们可以使用firpm函数进行频率抽取法滤波器设计。

该函数的输入参数包括滤波器阶数、频率向量、增益向量和权重向量。

通过调整频率向量、增益向量和权重向量,可以实现对滤波器的灵活控制。

二、IIR滤波器的设计方法IIR滤波器全称为无限脉冲响应滤波器,其特点是具有非线性相位和多项式系数。

在Matlab中,常用的IIR滤波器设计方法有巴特沃斯滤波器、切比雪夫滤波器和椭圆滤波器。

1. 巴特沃斯滤波器巴特沃斯滤波器是一种最常用的IIR滤波器,其特点是具有最平滑的通带和最陡峭的阻带。

用matlab实现FIR滤波器的设计

用matlab实现FIR滤波器的设计

h(n) h( N 1 n)
其对称中心也在
N 1 处。此时有: 2
N 1
(2-8b)
H ( ) h(n) sin[(
n 0
N 1 n) ] 2Leabharlann (2-13a) (2-13b)
( ) (
N 1 ) 2 2 2
即 h(n) 呈奇对称的滤波器相位与 h(n) 呈偶对称的相位产生了
由式(2-1)可以看出,H(z)是 z 1 的 N-1 次多项式,它在 z 平面内
3
有 N-1 个零点,同时在原点有 N-1 个重极点。因为 FIR 数字滤波器的单位 冲激响应是有限长的,所以它永远都是稳定的。在数字信号处理的许多领 域中,常常要求滤波器具有线性相位,达到这一要求,仅需要对 FIR 数字 滤波器的冲激响应 h(n) 施加一定的约束 [4] 。令 z e jw ,就可由 H ( z) 得到 FIR 数字滤波器的频率响应:
N 1
H (e j ) H ( z ) |z e j h(n)e j n H ( )e j ( )
n 0
(2-2)
式中 H ( ) 是 H (e j ) 的幅频特性, ( ) 是 H (e j ) 的相频特性
( ) arctan(
Im( H (e j )) ) RE ( H (e j ))
(3) h(n) 为奇对称,且 N 为奇数(Ⅲ型滤波器) 当 h(n) 为奇对称,且为奇数时,根据式(2-13)滤波器的幅频函数可以 表示为:
( N 1)/2
H ( )
其中 c(n) 2h(

n 1
c (n) sin( n)
(2-16)
N N-1 n), n 1, 2, …, 。此时 H ( ) 对 0, , 2 呈奇对称。 2 2

FIR数字滤波器在MATLAB中实现

FIR数字滤波器在MATLAB中实现

淮北师范大学信息学院2 012届学士学位论文FIR数字滤波器在MATLAB中的实现系别:专业:学号:姓名:指导教师:指导教师职称:2012年 5 月 10 日FIR数字滤波器在MATLAB中的实现姓名学校名邮编摘要数字滤波器是由数字乘法器、加法器和延时单元组成的一种装置。

数字滤波器的功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。

近年来数字滤波在通信、图像编码、语言编码、雷达等许多领域中有着十分广泛的应用。

本文首先介绍了数字滤波器的研究背景及其发展现状,然后介绍了FIR数字滤波器的设计原理。

在理解设计方法的基础上,最后基于MATLAB软件利用窗函数法实现了FIR数字带通滤波器的设计。

仿真结果表明,所设计的滤波器具有良好的滤波器特性,所设计的指标符合设计任务要求。

关键词MATLAB;FIR数字滤波器;窗函数;带通滤波器Realization of FIR Digital Filter Based On matlabName###########################Abstract Digital Filter is a kind of instrument which is assembled with Digital multiplier, adder, and delay element , the function of the Digital Filter is operating and dealing with the digital code of discrete signal which is inputted to change the frequency spectrum . In recent years , Digital Filter is widely applied to all kinds of areas, such as Signal communication, image coding ,language coding ,radar and so on.This paper firstly introduces the studying background and current developing status of Digital FIR Filter, and then shows its design principle .Finally we realize the design of FIR Bandpass Digital Filter with Window Function based MATLAB software at the basement of understanding design methods. The outcome of simulation indicates that the Digital Filter does well in meeting the filter characters, at the same time ,indexes from the filter complies with the design requirements.Keywords MATLAB; FIR Filter; Window Function Design; Band Pass Filter目次1 引言 (1)1.1 数字滤波器的研究背景和意义 (1)1.2 数字滤波器的发展及其现状 (1)1.3 数字滤波器的实现方法 (2)1.4 MATLAB简介 (2)2 FIR数字滤波器的设计原理 (4)2.1 FIR数字滤波器的特点 (4)2.2 FIR数字滤波器的实现结构 (4)2.3 窗函数法的设计原理 (7)3 FIR数字滤波器的设计与实现 (9)3.1几种常用的窗函数 (9)3.2 利用窗函数设计FIR带通滤波器的设计步骤 (12)3.3 基于MATLAB的FIR数字带通滤波器的仿真实现 (13)结论 (17)参考文献 (18)致谢 (19)1 引言在线性系统中,信号滤波过程一般定义为,当输入波形通过一个系统时,对它作一个线性运算,在时间域上这种变换如像内插,外插微分和积分,在频率域上这种变换则如低通滤波或平滑,带通滤波,谱设计和谱分析。

fir低通滤波器matlab编程滤波前后图形

fir低通滤波器matlab编程滤波前后图形
t=0:1/5000:1023/5000;%将数据的1024个点对应时间加载
figure(1);
plot(t,x0);
xlabel('t/s');
ylabel('幅值');
运行之后就得到如下波形,即振动信号的原始波形图:
1.5
1
0.5


0
-0.5
-1
-1.5
00.050.1
t/s0.150.20.25第四部分:滤波后的波形图
在matlab窗口中输入如下程序,即可得到滤波后的波形图:
x0=load('zhendong.txt');
t=0:1/5000:1023/5000;
figure(1);
plot(t,x0);xlael('t/s');
ylabel('幅值');
fs=5000;
n=32;
Wn=0.24;
b=fir1(n,Wn);%求滤波系数
数字截止频率等于截止频率除以采样频率的一半,即
n=600/5000/2=0.24第二部分:滤波器系数的确定
在matlab中输入如下程序,即可得到滤波器系数:
n=32
Wn=0.24
b=fir1(n,Wn)
得到的滤波器系数b为
Columns 1 through 9
-0.0008-0.0018-0.0024-0.00140.00210.00750.01100.0077-0.0054Columns 10 through 18
Matlab
附件txt中的数字是一个实测振动信号,采样频率为5000Hz,试设计一个长度为M=32的FIR低通滤波器,截止频率为600Hz,用此滤波器对此信号进行滤波。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法
摘要介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法、FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤波器的性能。

关键词 MATLAB,数字滤波器,有限冲激响应,窗函数,仿真
1 前言
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。

根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。

与IIR滤波器相比,FIR的实现是非递归的,总是稳定的;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性。

因此,它在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。

2 FIR滤波器的窗函数设计法 FIR滤波器的设计方法有许多种,如窗函数设计法、频率采样设计法和最优化设计法等。

窗函数设计法的基本原理是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列,主要设计步骤为:
(1) 通过傅里叶逆变换获得理想滤波器的单位脉冲响应hd(n)。

(2) 由性能指标确定窗函数W(n)和窗口长度N。

(3) 求得实际滤波器的单位脉冲响应h(n), h(n)即为所设计FIR滤波器系数向量b(n)。

(4) 检验滤波器性能。

本文将针对一个含有5Hz、15Hz和30Hz的混和正弦波信号,设计一个FIR带通滤波器,给出利用MATLAB实现的三种方法:程序设计法、 FDATool设计法和SPTool设计法。

参数要求:采样频率fs=100Hz,通带下限截止频率fc1=10 Hz,通带上限截止频率
fc2=20 Hz,过渡带宽6 Hz,通阻带波动0.01,采用凯塞窗设计。

2 程序设计法
MATLAB信号处理工具箱提供了各种窗函数、滤波器设计函数和滤波器实现函数。

本文的带通滤波器设计及滤波程序如下:
[n,Wn,beta,ftype]=kaiserord([7 13 17 23],[0 1 0],[0.01 0.01 0.01],100);
%得出滤波器的阶数n=38,beta=3.4
w1=2*fc1/fs; w2=2*fc2/fs;%将模拟滤波器的技术指标转换为数字滤波器的技术指标
window=kaiser(n+1,beta);%使用kaiser窗函数
b=fir1(n,[w1 w2],window);使用标准频率响应的加窗设计函数fir1
freqz(b,1,512);%数字滤波器频率响应
t = (0:100)/Fs;
s = sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);%混和正弦波信号
sf = filter(b,1,s);%对信号s进行滤波
程序执行的结果如图1所示:
(1)滤波器幅频特性和相频特性(2)滤波前后的波形
图1 滤波器特性和滤波效果图
4 FDATool设计法
FDATool(Filter Design & Analysis Tool)是MATLAB信号处理工具箱专用的滤波器设计分析工具,操作简单、灵活,可以采用多种方法设计FIR和IIR滤波器。

在MATLAB命令窗口输入FDATool后回车就会弹出FDATool界面。

4.1 带通滤波器设计
已知滤波器的阶数n=38,beta=3.4。

本例中,首先在Filter Type中选择Bandpass;在Design Method选项中选择FIR Window,接着在Window选项中选取Kaiser,Beta值为3.4;指定Filter Order项中的Specify order为38;采样频率Fs=100Hz,截止频率
Fc1=10Hz,Fc2=20Hz。

设置完以后点击窗口下方的Design Filter,在窗口上方就会看到所设计滤波器的幅频响应,通过菜单选项Analysis还可以看到滤波器的相频响应、组延迟、脉冲响应、阶跃响应、零极点配置等。

设计完成后将结果保存为kaiser15.fda文件。

4.2 Simulink仿真
在Simulink环境下,将滤波器文件kaiser15.fda导入Digital Filter Design模块,输入信号为s(t)=sin(10πt)+sin(30πt)+sin(60πt),生成的仿真图和滤波效果如图2所示。

(1)Simulink仿真图(2)滤波前后的离散波形
图2 Simulink仿真图和滤波效果图
5 SPTool设计法
SPTool是MATLAB信号处理工具箱中自带的交互式图形用户界面工具,它包含了信号处理工具箱中的大部分函数,可以方便快捷地完成对信号、滤波器及频谱的分析、设计和浏览。

在本例中按以下步骤完成滤波器的设计和滤波:
创建并导入信号源。

在MATLAB命令窗口输入命令:
Fs=100;t = (0:100)/Fs;
s = sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);
此时,变量Fs、t、s将显示在workspace列表中。

在命令窗口键入Sptool,将弹出Sptool 主界面,如图3所示;点击菜单File/Import将信号s导入并取名为s。

(2)单击Filters列表下的New,按照参数要求设计出滤波器filt1,具体步骤类似于
3.2.1。

(3)将滤波器filt1应用到s信号序列。

分别在Signals、Filters、Spectra列表中选择s、filt1、mtlbse,单击Filters列表下的Apply按钮,在弹出的Apply Filter对话框中将输出信号命名为sin15hz。

(4)进行频谱分析。

在Signals中选择s,单击Spectra下的Create按钮,在弹出的Spectra Viewer界面中选择Method为FFT,Nfft=512,单击Apply按钮生成s的频谱
spect1。

同样的步骤可以生成信号sin15hz的频谱spect2。

分别选中信号s、sin15hz、spect1、spect2,单击各自列表下方的View按钮,即可观察他们的波形,如图4所示。

图3 SPTool主界面图4 滤波前后的时域波形和频域特性
由图4可以看出,带通滤波器filt1使输入信号s中频率为15hz的正弦波信号通过,而将频率为5hz和30hz的正弦波信号大大衰减。

6 结束语
本文通过一个设计实例,介绍了利用MATLAB实现 FIR滤波器设计与滤波的三种方法,从仿真结果可以看出它们均可以达到技术指标要求,而且方法简单、快捷,大大减轻了工作量。

滤波器的设计工作完成后,可以借助于MATLAB的export操作导出所设计滤波器的系统函数H(z)。

由于MATLAB具有强大的接口功能,仿真后的结果可以很方便的移植到 DSP、CPLD或FPGA等器件中。

在实际应用中,只需按要求修改滤波器参数,并对程序作较少的改动,即可实现不同截止频率的FIR滤波器,实用性较强。

相关文档
最新文档