利用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)。
基于matlab窗函数的FIR带通滤波器设计

X l a b e l ( ’ f r e q u e n c y i n p i u n i t s ’ ) ; Y l a b d( 。 Ma g n i t u d e R e s p o n s e i n d b ’ ) ; s e t ( g c a , ’ X T i c k Mo d e ' , ' ma n u a l ' , ' X t i c k ’ , [ 0 , 0 . 2 , 0 . 3 5 , 0 . 6 5 , 0 . 8 , 1 1 ) s e t ( g c a , ’ Y T i e k Mo d e ’ , ’ ma J 1 u a l ’ , ’ Y t i c k ’ , [ - 6 0 , o ] ) 2 结 果 分 析
程序运算结果 : M =7 5 , R p= O . 0 0 2 8 , A s =7 5 , 运算结果 图如图 1 所 示。由图可知 , 7 5阶 布 莱 克 曼 窗 的最 小 阻带 衰 减 为 7 5 d b ( > 6 0 d b ) , 通带最大衰减 O . O 0 2 8 d b ( < < l d b ) , 符合设计题 目的技 术指标
口
:
:
限长 F I R( i f n i t e i m p u l s e r e s p o n s e ) 滤波 器 和 无 限 长 l i B( i n f i n i t e i m — p u l s e r e s p o n s e ) 滤波器 。F I R数字 滤波器幅频特性精 度 比 I I R低 , 且 滤波器所 需阶次 比较 高 , 但是 它拥有很好 的线性相位 特性 , 即不 同 昱 . 印 频率分量的信号经过 F I R滤波器后 其时间差 不变 。 MA T L A B是美 国 Ma t h Wo r k s 公司推 出 的一 套用 于工程计算 的可 视化高 性能语 言 与 软 件环境 , 是 数字信号处理技术 实现的重要手段 。本 文采用 M A T _ L A B窗 函数法实现 F I R数字滤波器的设计 。 至 1程序设计及运行结果 I 根 据研究任务 , 需设计 带通数字滤 波器 的性 能指标如 下 : 低通 阻带边界频 率 : w s l = 0 . 2 * p i , 高端阻带边界频率 : w s 2 = 0 . 8 p i ; 阻带最小 口 衰减: A s = 6 0 d b 。低端通带边 界频率 : w p l = 0 . 3 5 " p i , 高端 通带边界 频 率: w p 2 = 0 . 6 5 " p i ; 通带最大衰减 :R p = l a b 。 根 据窗 函数最小 阻带衰减 的特性 表[ 2 1 , 可采用布莱 克曼 窗提供 大于6 0 d B的衰减 。设 计程序如下 : p l o t ( w / p i , d b ) ; d ; %数字滤波器的参数
实验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滤波器设计与实现

二、实验平台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);figure (1)plot(w1/pi, abs(h1));grid;xlabel('归一化频率/p') ;ylabel('幅度/dB') ;figure (2)plot(w1/pi,angle(h1));grid;xlabel('归一化频率/p') ;ylabel('相位') ;波形如下:例2 利用雷米兹交替算法设计等波纹滤波器,设计一个线性相位低通FIR数字滤波器,其指标为:通带边界频率fc=800Hz,阻带边界fr=1000Hz,通带波动阻带最小衰减At=40dB,采样频率fs=4000Hz。
一般调用MATLAB信号处理工具箱函数remezord来计算等波纹滤波器阶数N和加权函数W (ω),调用函数remez可进行等波纹滤波器的设计,直接求出滤波器系数。
函数remezord中的数组fedge为通带和阻带边界频率,数组mval是两个边界处的幅值,而数组dev是通带和阻带的波动,fs是采样频率单位为Hz。
基于matlab的fir数字滤波器的设计

一、引言数字滤波器是数字信号处理中至关重要的组成部分,它能够对数字信号进行滤波处理,去除噪音和干扰,提取信号中的有效信息。
其中,fir数字滤波器作为一种常见的数字滤波器类型,具有稳定性强、相位响应线性等特点,在数字信号处理领域得到了广泛的应用。
本文将基于matlab软件,探讨fir数字滤波器的设计原理、方法和实现过程,以期能够全面、系统地了解fir数字滤波器的设计流程。
二、fir数字滤波器的基本原理fir数字滤波器是一种有限长冲激响应(finite impulse response, FIR)的数字滤波器,其基本原理是利用线性相位特性的滤波器来实现对数字信号的筛选和处理。
fir数字滤波器的表达式为:$$y(n) = \sum_{k=0}^{M}h(k)x(n-k)$$其中,y(n)为输出信号,x(n)为输入信号,h(k)为滤波器的系数,M为滤波器的长度。
fir数字滤波器的频率响应特性由其系数h(k)决定,通过设计合适的系数,可以实现对不同频率成分的滤波效果。
三、fir数字滤波器的设计方法fir数字滤波器的设计方法主要包括窗函数法、频率抽样法、最小最大法等。
在matlab中,可以通过信号处理工具箱提供的fir1函数和firls函数等来实现fir数字滤波器的设计。
下面将分别介绍这两种设计方法的基本原理及实现步骤。
1. 窗函数法窗函数法是fir数字滤波器设计中最为常见的方法之一,其基本原理是通过对理想滤波器的频率响应进行窗函数加权来满足设计要求。
在matlab中,可以使用fir1函数实现fir数字滤波器的设计,其调用格式为:h = fir1(N, Wn, type)其中,N为滤波器的阶数,Wn为滤波器的截止频率,type为窗函数的类型。
通过调用fir1函数,可以灵活地设计出满足特定要求的fir数字滤波器。
2. 频率抽样法频率抽样法是fir数字滤波器设计中的另一种重要方法,其基本原理是在频域上对理想滤波器的频率响应进行抽样,并拟合出一个最优的滤波器。
利用MATLAB窗函数法设计一个可实现的FIR低通滤波器。

一、实验目的1.掌握在MATLAB中窗函数的使用方法,了解不同窗函数之间的差别。
2.使用窗函数法设计一个可实现的FIR低通滤波器。
3.观察在相同长度下,不同的窗函数设计出来的滤波器有什么差别。
4.观察同一个窗在不同长度下设计出来的滤波器有什么差别。
二、实验条件PC机,MATLAB7.0三、实验内容1)通过help查找窗函数在MATLAB中如何实现通过example了解MATLAB中窗函数的实现,并且利用矩形窗,汉宁窗,哈明窗,布莱克曼窗和凯塞窗来进行接下来的实验。
2)设计物理可实现的低通滤波器设计思路:因为要设计FIR有限脉冲响应滤波器,通常的理想滤波器的单位脉冲响应h是无限长的,所以需要通过窗来截断它,从而变成可实现的低通滤波器。
程序如下:clc;clear all;omga_d=pi/5;omga=0:pi/30:pi;for N=3:4:51;w1= window(@blackman,N);w2 = window(@hamming,N);w3= window(@kaiser,N,2.5);w4= window(@hann,N);w5 = window(@rectwin,N);M=floor(N/2);subplot(311);plot(-M:M,[w1,w2,w3,w4,w5]); axis([-M M 0 1]);legend('Blackman','Hamming','kaiser','hann','rectwin');n=1:M;hd=sin(n*omga_d)./(n*omga_d)*omga_d/pi;hd=[fliplr(hd),1/omga_d,hd];h_d1=hd.*w1';h_d2=hd.*w2';h_d3=hd.*w3';h_d4=hd.*w4';h_d5=hd.*w5';m=1:M;H_d1=2*cos(omga'*m)*h_d1(M+2:N)'+h_d1(M+1);H_d2=2*cos(omga'*m)*h_d2(M+2:N)'+h_d2(M+1);H_d3=2*cos(omga'*m)*h_d3(M+2:N)'+h_d3(M+1);H_d4=2*cos(omga'*m)*h_d4(M+2:N)'+h_d4(M+1);H_d5=2*cos(omga'*m)*h_d5(M+2:N)'+h_d5(M+1);subplot(312);plot(omga,[H_d1,H_d2,H_d3,H_d4,H_d5]);legend('Blackman','Hamming','kaiser','hann','rectwin');subplot(313);plot(abs([fft(h_d1);fft(h_d2);fft(h_d3);fft(h_d4);fft(h_d5)] )');pause();end程序分析:整个对称窗的长度为N,然而为了在MATLAB中看到窗函数在负值时的形状需将N 变为它的一半,即为2M+1个长度。
基于MATLAB设计FIR滤波器

基于MATLAB设计FIR滤波器FIR(Finite Impulse Response)滤波器是一种数字滤波器,它具有有限的冲激响应长度。
基于MATLAB设计FIR滤波器可以使用signal工具箱中的fir1函数。
fir1函数的语法如下:b = fir1(N, Wn, window)其中,N是滤波器的阶数,Wn是截止频率,window是窗函数。
要设计一个FIR低通滤波器,可以按照以下步骤进行:步骤1:确定滤波器的阶数。
阶数决定了滤波器的截止频率的陡峭程度。
一般情况下,阶数越高,滤波器的陡峭度越高,但计算复杂度也会增加。
步骤2:确定滤波器的截止频率。
截止频率是指在滤波器中将信号的频率限制在一定范围内的频率。
根据应用的需求,可以选择适当的截止频率。
步骤3:选择窗函数。
窗函数是为了在时域上窗口函数中心增加频率衰减因子而使用的函数。
常用的窗函数有Hamming、Hanning等。
窗函数可以用来控制滤波器的幅度响应特性,使得它更平滑。
步骤4:使用fir1函数设计滤波器。
根据以上步骤确定滤波器的阶数、截止频率和窗函数,可以使用fir1函数设计FIR滤波器。
具体代码如下:N=50;%设定阶数Wn=0.5;%设定截止频率window = hanning(N + 1); % 使用Hanning窗函数步骤5:使用filter函数对信号进行滤波。
设计好FIR滤波器后,可以使用filter函数对信号进行滤波。
具体代码如下:filtered_signal = filter(b, 1, input_signal);其中,input_signal是输入信号,filtered_signal是滤波后的信号。
以上,便是基于MATLAB设计FIR滤波器的简要步骤和代码示例。
根据具体需求和信号特性,可以进行相应的调整和优化。
基于窗函数的FIR数字滤波器的优化及Matlab实现

由 已知 的 H ( 求 出 l()经过 z变 换可 得 到滤 波器 d e 1n , d 的系统函数 。但一般情况 下, e 是逐段稳 定的 , 边界频 I O  ̄( 在
H( = hne ̄ ()-
率处有 不 连续 点 , 因而 l() ln 是无 限时 宽 的, 是非 因果 序 d 且 列。 但是 从实现的角度来 说, 我们希 望得到一个 长度 为 N的
续一 定的时间 。
一
个 有 限长度 的窗 口函数序列 w() n 来截取 一个无 限长 的序
列 h() a n 获得 一个有 限长序 列 hn , hn=b() ()即 () d +w() n n 。这
样我 们用 一个 有 限长 的序 列 h n去代 替 h()肯 定会 引起 () d , n
波 器称之为 数字滤 波器 。数字滤 波器是 通过 一定运算 关系 改变输入信 号所含 频率成 分 的相 对 比例 或者 滤除某 些频率 成 分的器件 [ 1 ] 字滤波器 从单位脉冲 响应 分类 , 以分为 。数 可 无 限脉 冲响应 ( 滤波 器和有 限脉冲 响应 (瓜) I m) F 滤波器 。 由 数 字信 号处理 的一般理 论可 知,I I R滤波器 的特征 是具 有无 限持续时 间的冲激 响应 ,而 FR滤波器 的冲激 响应只 能持 I
线性相位滤波器 , 因此只 能通 过对 n进行加 窗得出 。 )
作 者 简介 : 明 , , 川 南充 人 , 科 , 究方 向 : 李 男 四 本 研 下一 代 网络 , 号 处理 。 信
3 a Ib 仿真设计 FR数 字滤波器 .M t a I
Mal t b是 Mah rs公 司 于 1 8 a tWok 9 2年推 出的一 套 高性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西南石油大学实验报告
一实验目的:
学习利用MATLAB进行基于窗函数的FIR数字滤波器的设计。
二实验内容:
利用矩形窗、哈明窗、汉宁窗和布莱克曼窗设计一个FIR低通滤波器,已知ωc=0.25π,N=10
三实验步骤:
1、实验程序
N=10;
M=128;
b1=fir1(N,0.25,boxcar(N+1)); %用矩形窗作为冲激响应的窗函数
b2=fir1(N,0.25,hamming(N+1)); %用哈明窗作为冲激响应的窗函数
b3=fir1(N,0.25,blackman(N+1)); %用布莱克曼窗作为冲激响应的窗函数
b4=fir1(N,0.25,hanning(N+1)); %用汉宁窗作为冲激响应的窗函数
h1=freqz(b1,1,M); %矩形窗对应的频率响应
h2=freqz(b2,1,M); %哈明窗对应的频率响应
h3=freqz(b3,1,M); %布莱克曼窗对应的频率响应
h4=freqz(b4,1,M); %汉宁窗对应的频率响应
f=0:0.5/M:0.5-0.5/M;
plot(f,abs(h1),'-.',f,abs(h2),f,abs(h3),'*',f,abs(h4),':');
legend('¾ØÐδ°','¹þÃ÷´°','BLACKMAN','ººÄþ´°');
grid;
ylabel('magnitude response');
xlabel('w/(2*pi)');
axis([0 0.5 0 1.2]);
set(gca,'XTickMode','manual','XTick',[0,0.25,0.5]);
set(gca,'YTickMode','manual','XTick',[0,0.5,1]);
2、运行结果如下图所示
四、实验结论
在实验后,我对MATLAB软件有了进一步的了解,也在不断的实践中,更多的熟悉了MATLAB的编程,在编程方面一点点的有了进步。
只是,还需要课后多加的去研究MATLAB。
此次实验收获很大。