FIR滤波器的MATLAB实现

合集下载

使用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滤波器系数。

FIR数字滤波器在MATLAB中的实现

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数字滤波器的设计与实现 (10)3.1几种常用的窗函数 (10)3.2 利用窗函数设计FIR带通滤波器的设计步骤 (14)3.3 基于MATLAB的FIR数字带通滤波器的仿真实现 (15)结论 (20)参考文献 (21)致谢 (22)1 引言在线性系统中,信号滤波过程一般定义为,当输入波形通过一个系统时,对它作一个线性运算,在时间域上这种变换如像内插,外插微分和积分,在频率域上这种变换则如低通滤波或平滑,带通滤波,谱设计和谱分析。

FIR滤波器的MATLAB设计与实现

FIR滤波器的MATLAB设计与实现

FIR滤波器的MATLAB设计与实现1、设计任务1、用MATLAB软件实现FIR滤波器;2、设计基于DSP的FIR滤波器硬件框图;3、了解用DSP实现FIR滤波器的关键问题;4、完成必要的软件流程图;2.前言在通信与电子信息当中,在对信号作分析与处理时,常会遇到有用信号叠加无用噪声的问题;这些噪声信号有的是与信号同时产生的,有的是在传输过程中混入的,在接收的信号中,必须消除或减弱噪声干扰,这是信号处理中十分重要的问题;根据有用信号与噪声的不同特性,消除或减弱噪声,提取有用信号的过程就称为滤波;滤波器的种类很多,实现方法也多种多样;随着数字技术的飞速发展,数字滤波理论也得到了长足的进步;因此,对数字滤波系统硬件实现的要求也越来越高,而软件模拟的方法不仅能及时地提供系统运行的信息,还可以随时改变系统结构从而验证全新的系统,所以软件仿真变得非常重要;Matlab 是具有很强的科学计算和图形显示功能的软件系统,可以对数字滤波器进行精确设计,并且方便地进行FFT 频谱分析与频谱图显示,从而对数字滤波器进行快速地检验和分析;本文讨论在MATLAB 平台下的FIR 数字滤波器设计与分析;DSP是一种实时、快速、特别适合于实现各种数字信号处理运算的微处理器;由于它由具有丰富的硬件资源、高速数据处理能力和强大的指令系统,而在通信、航空、航天、雷达、工业控制、网络及家用电器等各个领域得到广泛应用;DSP分为定点和浮点两种,本文以定点DSP芯片为例,讨论FIR滤波器实现的几个关键问题;所讨论的这些问题,在DSP系统设计中有实际的参考和应用价值;3.FIR 滤波器的原理与MATLAB仿真设计滤波器概述数字滤波在数字信号处理中占有重要的地位,是广泛使用的一种基本线性处理模块,它可以实现模拟器件很难达到的准确线性相位关系特性;数字滤波器分为无限冲激响应滤波器IIR和有限冲激响应滤波器FIR;由于FIR系统只有零点,因此这类滤波器不像IIR 滤波器那样容易取得比较好的通带与阻带衰减特性;要取得好的衰减特性,一般要求Hz 的阶次要高,即N 要大;FIR 滤波器有自己突出的优点,其一是系统总是稳定的,其二是易实现线性相位,其三是只要经过一定的时延,任何非因果有现场序列都能变成因果有限长序列,因而总能用因果系统来实现,其四是FIR 滤波器由于单位冲击响应是有限长的,因而可以用快速傅里叶变换算法来实现过滤信号,从而可以大大提高运算效率;由于FIR 滤波器在阶数相同的条件下运算速度比IIR 滤波器快,同时FIR 滤波器具有不含反馈环路、结构简单以及可以实现的严格线性相位等优点,因而在对相位要求比较严格的条件下,常常采用FIR 数字滤波器;目前常用的设计方法主要有窗函数法、频率取样法及等波纹逼近法;本文应用窗函数法设计FIR 数字低通滤波器;具体参数见表一;FIR 数字滤波器基本原理3.2.1窗函数法的基本思想先构造一个线性相位理想滤波器的频率响应()jw d H e ,然后用一个N 点的窗函数wn, (01)n N ≤≤-去截取理想滤波器的单位抽样响应()d h n 通常为无限长,从而得到具有线性相位的实际滤波器的有限长单位抽样响()()()d h n h n w n =;3.2.2基本方法1构造线性相位理想滤波器的频率响应()jw d H e ,为简单起见,若没有90°相移的特殊要求,一般选择滤波器具有第一类线性相位;2求理想滤波器的单位抽样响应()d h n ;3根据技术指标要求和4种形式的线性相位FIR 数字滤波器的特点,选择合适的窗函数wn 及其长度N,然后对()d h n 加窗函数截取,得到具有线性相应的实际FIR 数字滤波器的单位抽样相应()()()d h n h n w n =,(01)n N ≤≤-;4检验实际滤波器的频率响应()[()]jw H e DTFT h n =是否满足设计指标要求;3.2.3用窗函数设计FIR 滤波器的步骤1根据技术要求确定线性相位理想滤波器的频率响应()jw d H e ;2求理想滤波器的单位抽样响应()d h n ;3根据对过渡带及阻带衰减的要求,选择窗函数的形式,并估计窗口长度N,设待求滤波器的过渡带用△w 表示,它近似等于窗函数主瓣的宽度;4计算滤波器的单位抽样响应()()()d h n h n w n =5验算技术指标是否满足要求,设计出的滤波器频率响应用下式计算10()()N jwjwn n H e h n e --==∑ 3.2.4用窗函数设计FIR 滤波器设滤波器的通带截止频率为p f ,阻带截止频率为s f ,系统采样频率为samp f ,则其过渡带宽带为tw s p f f f =-,抽样周期为 2S sampT f π= 则过渡带数字角频率为22s p tw tw samp samp f f f w f f ππ-== 各种窗函数的过渡带宽可用x Nπ来表示,其中N 是滤波器阶数,x 是一个整数,对应于矩形窗,三角窗,汉宁窗,汉明窗,其值分别为4,8,8,8,所以滤波器的阶数N 可由下式求得2()samp tw s p xf x N w f f π==- 理想低通滤波器的冲击响应为()sin(())()c d n w n h n π-∂=-∂ 其中(1)2N -∂=, c w 是3dB 通带截止数字角频率,其值为 ()()2p s Sp s c samp f f T f f w f π++==加窗后的低通滤波器的冲击响应为()()()n d n n h h w =检验实际滤波器的频率响应()[()]jw H e DTFT h n =是否满足设计指标要求;表1 几种常见的窗函数对比例:用窗函数设计一个线性相位FIR低通滤波器,并满足性能要求:通带边界的归一化频率wp=,阻带边界的归一化频率ws=,阻带衰减不小于30dB,.通带波纹不大于3dB,假设一个信号,其中f1=5Hz,f2=20Hz.;信号的采样频率为50Hz.;并将原信号与通过滤波器的信号进行比较;由题意值,阻带衰减不小于30dB,根据表1,选取汉宁窗,因为汉宁窗的第一旁瓣相对主瓣衰减为31dB,满足滤波要求;wp=pi;ws=pi; %滤波器的边界频率wdelta=ws-wp; %过渡带宽度N=ceil8pi/wdelta; %根据过渡带宽等于表中汉宁窗函数的主瓣宽度求得滤波器所用常函数的最小带宽Wn=+pi/2; %截止频率取通带和阻带边界频率的中点b=fir1N,Wn/pi,hanningN+1;%设计FIR滤波器H,f=freqzb,1,512,50; %采用50Hz的采样频率绘出该滤波器的幅频和相频响应subplot2,1,1,plotf,20log10absH;xlabel'频率';ylabel'振幅';grid on;subplot2,1,2,plotf,180/piunwrapangleH;xlabel'频率';ylabel'相位';grid on;f1=3;f2=20;dt=;t=0:dt:3; %采样间隔和检测信号的时间序列x=sin2pif1t+cos2pif2t; %检测信号y=fftfiltb,x; %给出滤波器的输出figure2subplot2,1,1,plott,x,title'输入信号' %绘出输入信号subplot2,1,2,plott,y %绘出输出信号hold on;plot1 1N-1/2dt,ylim,'r' %绘出延迟到的时刻xlabel'时间',title'输出信号'图1 所设计滤波器的幅频响应上图和相频响应下图图2 所设计滤波器的输入和输出信号程序运行结果如图1,2.该例对应于50Hz的采样频率通带边界频率为fp=50/2=,fs=50/2=;有图1上图得,在小于的频段上,几乎看不到下降,即满足通带波纹不大于3dB的要求;在大于的频段上,阻带衰减大于30dB,满足题目要求;由图1下图得,在通带范围内,相位频率响应为一条直线,表面该滤波器为线性相位;图2给出了滤波器的输入信号和输出信号,输入信号包括3Hz和20Hz的信号,由图1可知,20Hz的信号不能通过该滤波器,通过滤波器后只剩下3Hz的信号;由于FIR滤波所需的阶数较高,信号延迟N-1/2也较大,输出信号前面有一段直线就是延迟造成的; 4.FIR滤波器的DSP实现FIR滤波器的DSP实现方案DSP与一般的微处理器相比有很大的区别;它所特有的结构和指令集合为解决复杂的数字信号处理问题提供了便利;在DSP处理器上实现FIR滤波时,一般使用实系数的FIR滤波器,其最基本的操作是MAC乘-累加指令;本文介绍在TMS320C54X上实现FIR 滤波器;C54X上有一个17位17位的乘法器和一个40位的加法器,用于在单周期内实现MAC运算;同时,C54X使用了先进的多总线体系结构,包含1条程序总线,3条数据总线及4条辅助地址总线;这些特殊的硬件结构使得C54X支持单指令循环,快循环,数据块搬移及循环寻址;所以这些都有利于高效的实现FIR滤波器;硬件框图图3 系统总体框图JTAGJoint Test Action Group联合测试行动小组是一种国际标准测试协议IEEE兼容,主要用于芯片内部测试;基本原理是在器件内部定义一个TAPTest Access Port&0;测试访问口通过专用的JTAG测试工具对内部节点进行测试;JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试;FLASE存储器具有性价比高,体积小,功耗低,可电擦写,使用方便等优点;在DSP应用系统中采用Flash存储器和固定数据是一种比较好的选择;SRAM静态存储器,读写速度快,但价格较高;适合于外部存放需要经常访问或更新的临时数据;RS232电平转换模块,将外部电平转换为适合DSP芯片内部要求的电平;图3是系统的总体框图;主要包括输入信号缓冲及调理电路、A/D 变换器、输入缓冲 FIFO、DSP及外围电路、输出缓冲FIFO、D/A变换器等几部分;其中DSP及外围电路包括程序存储器、串行口、显示及键盘接口等;串行口用于实现和PC机的通信,可以通过PC机对滤波器的控制;假定输入模拟信号为带限信号;该信号经缓冲和调理后经A/D变换进入输入缓冲FIFO,当 FIFO中的数据达到一定数量时产生中断,DSP将数据读入内存中并进行计算和处理,这里DSP主要实现FIR滤波运算;处理后的数据写入输出FIFO中,之后通过D/A变换后输出模拟信号;输出的信号是低通滤波后的结果;用DSP实现FIR滤波器的关键问题定点数的定标在滤波器的实现过程中,DSP所要处理的数可能是整数,也可能是小数或混合小数;然而,DSP在执行算术运算指令时,并不知道当前所处理的数据是整数还是小数,更不能指出小数点的位置在哪里;因此,在编程时必须指定一个数的小数点处于哪一位,这就是定标;通过定标,可以在16位数的不同位置上确定小数点,从而表示出一个范围大小不同且精度也不同的小数;误差问题因为在用定点DSP实现时,所有的数据都是定长的,运算也都是定点运算,因而会产生有限字长效应;所产生的误差主要包括:数模转换引起的量化误差、系数量化引起的误差以及运算过程中的舍入误差;在用定点DSP时,产生误差是不能避免的;循环寻址循环寻址是DSP中经常用到的一种寻址方式;该寻址方法可以对一块特定存储区实现循环的操作;可以把循环寻址理解为实现一个滑动窗,新数据引入后将覆盖老的数据,便得该窗中包含了需处理的最新数据;在数字信号处理中的FIR、卷积等运算中,循环寻址具有极其重要的意义;运算量估计及D SP 芯片的选取;滤波器必须做到实时处理,因此对运算量应该有一个精确的估计,然后选择合适的D SP 处理器;估计运算量时应按最高采样率时计算,主要估算其乘加次数;A/D 及D/A 变换器的选取A/D 及D/A 变换器的选取主要考虑速度和数据宽度;变换器的速度一定要大于所设计滤波器的最高采样速率并要考虑一定的裕量,变换器的数据宽度则根据实际需要的计算精度选择;DDS 芯片的选取DDS 芯片的选择主要考虑频率的调整步长,当可调滤波器的调整步长较大时,可以选择精度稍低的D DS 芯片;软件流程滤波器的软件要实现的功能主要是FIR滤波;工作流程为:根据按键输入的频率,DSP计算出应对AD9850设置的状态字并对AD9850进行设置,AD9850将按设置的频率输出时钟;A/D 转换后的数据进入FIFO中,当到达设置的数据量时将产生中断,DSP将输入 FIFO 中的数据读入DSP并进行FIR运算;运算完成后的数据写入输出FIFO;输出FIFO中的数据将按照与A/D转换同样的速率输出到 D/A 变换器中并产生模拟输出;这样,只要保证FIR运算足够快就可以既不会产生数据溢出,也不会输出数据不足;图4 软件流程图5.结束语由于数字技术的飞速发展,数字滤波理论得到飞速发展,对数字滤波器的设计也提出了更高的要求;现代数字滤波器可以用软件或硬件2 种方式来实现,软件方式实现的优点是可以通过参数的修改进行滤波器性能的仿真和优化;本文运用MATLAB软件,根据设计要求进行了FIR滤波器的仿真;并分析了用DSP实现FIR滤波器的硬件结构和几个关键问题,这些关键问题在实际设计中都有着重要义; 6.参考文献1程佩青.数字信号处理教程M.北京:清华大学出版社,2008,323-369.2万永革.数字信号处理的MATLAB实现M.北京:科学出版社,2007,187-234.3张卫宁.DSP原理及应用教程M.北京:科学出版社,2008,282-296.4张雄伟,邹霞,贾冲.DSP芯片原理与应用M.北京:机械工业出版社,2005,48-76.5罗军辉,罗勇江,白义臣,庞娜.Matlab在数字信号处理中的应用M.北京:机械工业出版社,2005,99-115.6赵顺珍,马英..基于DSP的FIR数字滤波器设计与实现J..微计算机信息,2009 ,25 2:29-31.7张萍.基于MATLAB与DSP的FIR数字滤波器的设计J.中国科技信息,200723:80 – 81.8周辉,董正宏.数字信号处理基础及Matlab实现M.北京:希望电子出版社,2006,116-121.9彭红平,杨福宝.基于Matlab 的FIR 数字滤波器设计J.武汉理工大学学报,2005,105: 275-278.7.个人总结这次课设题目是FIR滤波器的MATLAB设计与实现,通过这次课设使我受益匪浅,首先,我先去图书馆下载各种论文,在网上查找各种资料,但FIR滤波器的知识已经忘得差不多了,一些资料看不懂,把数字信号课件又了一遍,然后是MATLAB编程,以前虽然做实验的时候接触过MATLAB软件,但并不很熟练,这次编程中出现了一些不应该的错误;在这次课设中,需要了解怎么用DSP实现FIR滤波器,由于我们没有学过DSP,所以查了一些资料,但还是觉得很不明白;在写课设报告过程中,越写越觉得自己很无知,平时学习不扎实,对各种知识点没有进行及时积累与总结,导致做课设时临时抱佛脚;以后一定要认真学习,拓展学习知识面,也要加强团队合作与沟通;。

基于MATLAB设计FIR滤波器

基于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滤波器的简要步骤和代码示例。

根据具体需求和信号特性,可以进行相应的调整和优化。

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

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

基于MATLAB与CCS的FIR滤波器设计与实现FIR滤波器(Finite Impulse Response Filter)是一种常用的数字滤波器,特点是系统的冲激响应为有限长度,所以也称为有限冲激响应滤波器。

FIR滤波器具有线性相位特性、较好的频率响应控制以及稳定性等优点。

在MATLAB和CCS软件中,我们可以使用不同的方法来设计和实现FIR滤波器。

首先,我们来介绍如何在MATLAB中设计和实现FIR滤波器。

MATLAB 提供了fir1函数来设计FIR滤波器。

该函数可以根据给定的滤波器阶数和截止频率来生成FIR滤波器系数。

例如,如果我们想设计一个截止频率为0.2的10阶低通FIR滤波器,可以使用以下代码:```MATLABorder = 10; % 滤波器阶数cutoff = 0.2; % 截止频率b = fir1(order, cutoff); % 设计FIR滤波器```生成的滤波器系数b可以用于过滤输入信号。

例如,我们可以使用filter函数将一个输入信号x通过滤波器进行滤波:```MATLABx=...;%输入信号y = filter(b, 1, x); % 通过滤波器滤波```在CCS软件中,我们可以使用DSP/BIOS中提供的模块来实现FIR滤波器。

首先,我们需要在CCS中创建一个新的项目,然后配置DSP/BIOS Kernel环境。

接下来,我们可以使用DSP/BIOS中的算法库或者自定义算法实现FIR滤波器。

使用DSP/BIOS的算法库有两种方式,分别是使用C语言和使用Simulink。

如果我们选择使用C语言,可以使用DSPLIB函数库中的fir 函数来实现FIR滤波器。

fir函数需要提供滤波器系数和输入信号,然后它会返回滤波后的输出信号。

例如,以下是使用C语言实现FIR滤波器的示例代码:```C#include <dsplib.h>float x[N]; // 输入信号float b[M]; // 滤波器系数float y[N]; // 输出信号FIR_firGen(M, b); // 生成滤波器系数for (int i = 0; i < N; i++)y[i] = FIR_fir(x[i], b, M); // 滤波```如果我们选择使用Simulink,可以使用Simulink中提供的滤波器模块构建FIR滤波器。

用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这个软件有了进一步的了解,并且 加深了课本上的知识。与此同时,使我对 滤波器有了初步的认识。提高了我的理解 以及分析能力,理论和实践相结合,不仅 巩固了我的理论知识,同时更提高了我的 实践能力,使我受益匪浅。

FIR滤波器的MATLAB设计与实现

FIR滤波器的MATLAB设计与实现

FIR滤波器的MATLAB设计与实现FIR滤波器(Finite Impulse Response Filter)是一种数字滤波器,其特点是其响应仅由有限长度的序列决定。

在MATLAB中,我们可以使用信号处理工具箱中的函数来设计和实现FIR滤波器。

首先,需要明确FIR滤波器的设计目标,包括滤波器类型(低通、高通、带通、带阻)、通带和阻带的频率范围、通带和阻带的增益等。

这些目标将决定滤波器的系数及其顺序。

在MATLAB中,我们可以使用`fir1`函数来设计FIR滤波器。

该函数的使用方式如下:```matlabh = fir1(N, Wn, type);```其中,`N`是滤波器长度,`Wn`是通带边缘频率(0到0.5之间),`type`是滤波器的类型('low'低通、'high'高通、'bandpass'带通、'stop'带阻)。

该函数会返回一个长度为`N+1`的滤波器系数向量`h`。

例如,如果要设计一个采样频率为10kHz的低通滤波器,通带截止频率为2kHz,阻带频率为3kHz,可以使用以下代码:```matlabfc = 2000; % 通带截止频率h = fir1(50, fc/(fs/2), 'low');```上述代码中,`50`表示滤波器的长度。

注意,滤波器的长度越大,滤波器的频率响应越陡峭,但计算成本也更高。

在设计完成后,可以使用`freqz`函数来分析滤波器的频率响应。

例如,可以绘制滤波器的幅度响应和相位响应曲线:```matlabfreqz(h);```除了使用`fir1`函数外,MATLAB还提供了其他函数来设计FIR滤波器,如`fir2`、`firpm`、`firls`等,具体使用方式可以参考MATLAB的文档。

在实际应用中,我们可以将FIR滤波器应用于音频处理、图像处理、信号降噪等方面。

例如,可以使用FIR滤波器对音频信号进行去噪处理,或者对图像进行锐化处理等。

FIR数字滤波器的Matlab实现

FIR数字滤波器的Matlab实现

第7章 FIR 数字滤波器的Matlab 实现7.1 实验目的● 学习用窗函数法设计FIR 数字滤波器的原理及其设计步骤; ● 学习编写数字滤波器的设计程序的方法,并能进行正确编程; ● 根据给定的滤波器指标,给出设计步骤。

7.2 实验原理及实例分析7.2.1 FIR 低通数字滤波器的设计原理如果系统的冲激响应)(n h d 为已知,则系统的输入/输出关系为:)()()(n h n x n y d ⋅=对于低通滤波器,只要设计出低通滤波器的冲激响应函数,就可以由上式得到系统的输出了。

假设所希望的数字滤波器的频率响应为)(jw d e H ,它是频域的周期函数,周期为2π,那么它与)(jw d e H 相对应的傅立叶系数为dw e e H n h jnw jw d d )(21)(⎰-=πππ以)(n h d 为冲激响应的数字滤波器将具有频域响)(jw d e H 。

但是将)(n h d 作为滤波器脉冲响应有两个问题:(1) 它是无限长的,与FIP 滤波器脉冲响应有限长这一前提不一致 (2) 它是非因果的,0,0)(<≠n n h d 对此,要采取以下的措施,(1) 将)(n h d 截短 (2)将其往右平移, 由此得到)(2n h 的实际频域响应jnwN n jwd en h e H ∑-==12)()(,与理想频域响应)(jw d e H 相近,但不完全一致。

理论证明上述现象是对)(n h d 进行简单截短处理的必然结果,一般称为吉布斯现象,为尽可能的减少吉布斯现象,应对)(n h d 进行加窗截取,即以)()()(n W n h n h N d ⋅=作为FIR 滤波器的系数。

常用的窗函数有矩形窗、海明窗和布莱克曼窗等。

7.2.2 用窗函数法设计FIR 滤波器Matlab 设计FIR 滤波器有多种方法和对应的函数,见表7-1。

表7-1 matlab 设计FIR 滤波器的方法和函数窗函数方法不仅在数字滤波器的设计中占有重要的地位,同时可以用于功率谱的估计,从根本上讲,使用窗函数的目的就是消除由无限序列的截短而引起的Gibbs 现象所带来的影响。

基于matlab程序的fir滤波器设计实现

基于matlab程序的fir滤波器设计实现

基于matlab程序的fir滤波器设计实现随着科学技术的发展,电子设备的设计要求也在不断提高,需要功能更加齐全的电子设备。

滤波器作为重要的电子元件,可以降低噪声,提高电子设备的工作效率,广泛应用在通信、仪器仪表、电力系统等领域。

fir滤波器由具有非常特殊结构的线性系统组成。

在传输特性中,它具有稳定的延迟,具有良好的频率分析和回波抑制功能。

为了使用fir滤波器,我们必须对其进行合理的设计,实现滤波器的功能。

本文介绍使用matlab程序来设计和实现fir滤波器的方法。

首先,我们需要确定滤波器的目标,包括滤波器的截止频率、阻带频率以及期望的功率谱,然后将这些参数输入matlab程序中,并使用合适的算法来计算滤波器的系数。

在matlab中实现fir滤波器的各种算法有很多种,包括传统的窗函数法,频率响应插值法,自适应法和波束形成法等。

算法的选择取决于优化目标,可以根据滤波器的要求自由选择。

当确定了滤波器要求和设计算法之后,就可以使用matlab编写程序来实现这些算法。

matlab有丰富的函数库,可以很容易地实现fir滤波器的设计。

具体的程序设计步骤如下:首先,选择所需的设计参数,包括滤波器阶数、归一化频率、幅值和相位等;然后,选择所需的算法,计算出匹配的滤波器系数;最后,编写一个完整的程序来实现fir滤波器的设计,测试滤波器的参数,并输出实现结果。

本文介绍了使用matlab程序来实现fir滤波器设计的方法,它可以实现滤波器的质量分析和测试,可以根据滤波器要求进行精确的设计。

使用matlab来设计fir滤波器,不仅可以缩短设计时间,而且能够节省大量的金钱和人力,具有非常重要的意义。

总之,fir滤波器在电子设备设计中有着重要的作用,使用matlab程序来设计和实现fir滤波器有着非常重要的意义。

通过此次研究,有助于我们更好地理解和应用matlab程序来设计和实现fir 滤波器,从而提高滤波器的性能,从而更好地满足电子设备设计的要求。

实验五FIR滤波器的matlab实现

实验五FIR滤波器的matlab实现

实验五FIR滤波器的matlab实现一、实验目的和任务1.理解并掌握FIR数字滤波器的机理,了解各种窗函数对滤波特性的影响;2. 掌握用MATLAB构建FIR滤波器的方法,设计FIR低通滤波器;3. 观察FIR滤波器的频域特性。

二、实验原理滤波器的种类很多,从功能上可以分为低通、高通、带通和带阻滤波器,上述每种滤波器又可以分为模拟滤波器和数字滤波器。

如果滤波器的输入输出都是数字信号,则这样的滤波器称之为数字滤波器,它通常通过一定的运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分来实现滤波。

根据数字滤波器冲激响应的时域特性,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器[3]。

有数字信号处理的一般理论可知,IIR滤波器的特征是具有无限持续时间的冲激响应,而FIR滤波器使冲激响应只能持续一定的时间。

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

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

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

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

(4) 检验滤波器性能。

设计FIR低通、带通滤波器,并改变参数要求,观察输出结果。

参考实例一及解析(窗口函数法):N=21; wc=pi/4; %理想低通滤波器参数r=(N-1)/2;n=0:N-1;hdn= sin(wc*(n-r))/pi/(n-r); %计算理想低通单位脉冲响应hd(n)if rem(N,2)~=0; hdn(r+1)=wc/pi;end % N为奇数时,处理n=r点的0/0型wn1=boxcar(N); % 矩形窗hn1=hdn.*wn1'; % 加窗% 以上两条语句可代以fir函数:hn1=fir1(N-1,wc/pi,boxcar(N));wn2=boxcar(N); % 矩形窗hn2=hdn.*wn2'; % 加窗% 以上两条语句可代以fir函数:% hn2=fir1(N-1,wc/pi,hamming(N)); k=3;% k=1; %绘图函数p751f的位置参数hnwplot(hn1,k); title('矩形窗设计的h(n)');%hamming 窗wn2=hamming (N);hn2=hdn.*wn2';k=3;hnwplot(hn2,k); title ('hamming设计的h(n)');注意:可能会由于实验室没安装hnwplot工具函数而运行不好。

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

基于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。

FIR数字滤波器的MATLAB详细程序

FIR数字滤波器的MATLAB详细程序

%FIR-DF hd=ideal_lp(wc,M);Fs=32000;a=2*pi*6500;b=2*pi*7000;c=2*pi*9000;n1=0:4096;t=n1/Fs;xa=cos(a*t)+cos(b*t)+cos(c*t);%+cos(d*t);figure(1);y=fft(xa);plot(abs(y));title('fft(xa)变换');grid;Rp=0.25;As=52;%ws=pi*6600*2/Fs;wp=pi*6700*2/Fs;%gao tong%ws=pi*6700*2/Fs;wp=pi*6600*2/Fs;%di tongws=[pi*6600*2/Fs,pi*7400*2/Fs];wp=[pi*6800*2/Fs,pi*7200*2/Fs];%dai tong%ws=[pi*6600*2/Fs,pi*7400*2/Fs,pi*8600*2/Fs,pi*9400*2/Fs];wp=[pi*6800*2/Fs,pi*7200*2/Fs, pi*8800*2/Fs,pi*9200*2/Fs];%dai tong%ws=[pi*6800*2/Fs,pi*7200*2/Fs];wp=[pi*6600*2/Fs,pi*7400*2/Fs];%dai zuDB=abs(ws(1)-wp(1));%DB=abs(ws-wp);M0=ceil((As-8)/(2.285*DB));%阶数M=M0+mod(M0,2);%确保阶数为偶数N=M+1;%长度为奇数%0.112*(As-8.7);As>50;%0.5842*(As-21)^0.4+0.07886*(As-21);21<=As<=50;%0;As<21;if As>50beta=0.112*(As-8.7);elseif21<=As&&As<=50beta=0.5842*(As-21)^0.4+0.07886*(As-21);elsebeta=0;endwn=kaiser(N,beta);wc=(wp+ws)/2/pi;%fir1使用wc归一化%hn=fir1(M,wc,'high',wn);%gao tonghn=fir1(M,wc,wn);%dai tong,di tong%hn=fir1(M,wc,'stop',wn);%dai zufigure(2);plot(abs(wn));title('窗函数');grid;figure(3);[hh,w]=freqz(hn,1);freqzplot(hh,w,'linear');title('幅频/相频特性');%Hn=fft(hn);%plot(abs(Hn));title('FFT(Hn)');%freqz(hn,1);title('幅频特性');y=filter(hn,1,xa);figure(4);y1=fft(y);plot(abs(y1));title('高通滤波器滤波之后');grid;%=========验证=====================%验证%w_kai=wn';%hd=hn;%h=hd.*w_kai;%freqz_mN1=1000;[H,W]=freqz(hn,1,N1,'whole');%[H,W]=freqz(B,A,N1,'whole');delta_w=2*pi/N1;db=20*log10(abs(H)/max(abs(H))+eps);%通带波纹db数%rp1=-(min(db(wp/delta_w+1:1:501)))%gao tong yan zheng%as1=-round(max(db(1:1:ws/delta_w+1)))%rp1=-(min(db(1:1:wp/delta_w+1)))%di tong yan zheng%as1=-round(max(db(ws/delta_w+1:1:501)))rp1=-(min(db(wp(1)/delta_w+1:1:wp(2)/delta_w+1)))%dai tong yan zhengas1=round(max(-max(db(1:1:ws(1)/delta_w+1)),-max(db(ws(2)/delta_w+1:1:501))))%rp1=-min(min(db(1:1:wp(1)/delta_w+1)),min(db(wp(2)/delta_w+1:1: 501)))%dai zu yan zheng%as1=-round(max(db(ws(1)/delta_w+1:1:ws(2)/delta_w+1)))%N1=4096;%Hw=fft(h,N1);%wk=2*pi*[0:N1-1]/N1;%hgw=Hw.*exp(j*wk*N/2);%rp=max(20*log10(abs(hgw)))%%hgmin=min(real(hgw));%rs=20*log10(abs(hgmin))%w_kai=wn';%hd=hn;%h=hd.*w_kai;%d_w=2*pi/1000;%[db,w0]=freqz(h,1);%rp1=-(min(db(wp/d_w+1:1:501))) %as1=-round(max(db(1:1:ws/d_w+1)))。

matlab中fir自适应滤波器使用方法

matlab中fir自适应滤波器使用方法

一、fir自适应滤波器简介fir自适应滤波器是一种常用的数字信号处理滤波器,用于对非线性和时变信号进行滤波处理。

它可以根据输入信号和期望输出信号的误差来实时调整滤波器的参数,从而不断优化滤波效果。

在matlab中,可以使用dsp库中的adaptiveFilter函数来实现fir自适应滤波器。

二、fir自适应滤波器的原理fir自适应滤波器的原理是基于最小均方误差准则,通过不断调整滤波器的权重系数,使得滤波器的输出信号尽可能接近期望输出信号。

具体来说,fir自适应滤波器采用LMS(最小均方)算法或RLS(递推最小二乘)算法来更新滤波器的权重系数,以达到滤波效果的优化。

三、fir自适应滤波器在matlab中的实现在matlab中,可以使用dsp库中的adaptiveFilter函数来实现fir 自适应滤波器。

该函数支持LMS算法和RLS算法,并提供了丰富的参数设置和功能选项,可以灵活地应用于各种信号处理场景。

下面将介绍在matlab中如何使用adaptiveFilter函数来实现fir自适应滤波器。

四、在matlab中使用LMS算法实现fir自适应滤波器1. 创建一个代表输入信号的向量x,和一个代表期望输出信号的向量d。

2. 调用adaptiveFilter函数,设置滤波器的参数和算法选择,如:fir1 = dsp.AdaptiveLMSFilter('Length',8,'Method','LMS');3. 接下来,使用fir1滤波器对输入信号x进行滤波处理,得到输出信号y = fir1(x,d)。

4. 根据滤波器的输出结果y和期望输出信号d,评估滤波效果并调整滤波器的参数。

五、在matlab中使用RLS算法实现fir自适应滤波器1. 类似地,首先创建输入信号向量x和期望输出信号向量d。

2. 调用adaptiveFilter函数,设置滤波器的参数和算法选择,如:fir2 = dsp.AdaptiveLMSFilter('Length',8,'Method','RLS');3. 使用fir2滤波器对输入信号x进行滤波处理,得到输出信号y = fir2(x,d)。

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)。

使用matlab实现fir滤波,产生波形,并进行过滤

使用matlab实现fir滤波,产生波形,并进行过滤

使⽤matlab实现fir滤波,产⽣波形,并进⾏过滤代码如下这⾥直接使⽤了matlab中的fir1函数进⾏滤波,具体fir1函数如何使⽤可以百度
Fs=2048; %采样频率,根据⾹农采样定理,被采样信号频率不可以⾼于采样频率的⼀半,否则⽆法恢复出原信号
%产⽣的信号频率⼩于Fs/2,如果不满⾜此条件会发⽣信号频率的混叠,达不到预期的滤波效果
dt=1.0/Fs;
T=1;N=T/dt;t=[0:N-1]/N
x1=sin(2*pi*50*t)+sin(2*pi*300*t)+sin(2*pi*500*t); %产⽣⼀个频率为 50,300,500Hz的信号
subplot(3,1,1);plot(t,x1); %绘制输⼊信号
axis([0,0.1,-2,2]); %将x轴范围限制在0-0.1,y轴限制在-2到2
P=fft(x1,N); %对信号进⾏傅⾥叶变换
Pyy=2*sqrt(P.*conj(P))/N;
f=linspace(0,Fs/2,N/2);
subplot(3,1,2);plot(f,Pyy(1:N/2)); %画出信号频谱图
b=fir1(48,0.1); %滤波器取48长度,截⾄频率为0.1,取出低频信号,这⾥使⽤了matlab滤波函数
%b=fir1(48,[0.2 0.4]); %产⽣带通滤波器,取出中间的信号,滤去两边信号
%b=fir1(48,0.4,'high'); %让⾼频通过滤除两边信号
x2=filter(b,1,x1);
subplot(3,1,3);plot(t,x2);axis([0,0.1,-2,2]); %绘制滤除后的信号
滤波效果图如下。

MATLAB FIR滤波器

MATLAB FIR滤波器

Matlab中,函数fir1()和fir2()利用加窗傅里叶级数法设计FIR滤波器。

函数fir1()用来设计传统的LP(低通)、HP(高通)、BP(带通)、BS(带阻)和多频带FIR滤波器;而函数fir2()用来设计具有任意幅度响应的的FIR滤波器。

一、函数fir1的各种形式如下:b= fir1(N,Wn)b= fir1(N,Wn,'ftype')b= fir1(N,Wn,window)b= fir1(N,Wn,'ftype',window)b= fir1(...,'normalization')其中,1、N为滤波器节点个数;2、Wn(0<Wn<1)为归一化截止频率;3、ftype为滤波器类型(默认(缺省时)是low):•'high' for a highpass filter with cutoff frequency Wn.•'stop' for a bandstop filter, if Wn = [w1 w2]. The stopband frequency range is specified by this interval.•'DC-1' to make the first band of a multiband filter a passband.•'DC-0' to make the first band of a multiband filter a stopband.4、window为所加窗的类型(默认的是hamming窗),e.g hamming、chebwin、blackman、hanning、kaiser等。

5、normalization为是否将滤波器的幅度进行归一化:•'scale' (default): Normalize the filter so that the magnitude response of the filter at the center frequency of the passband is 0 dB.•'noscale': Do not normalize the filter.fir1()举例:设计一个低通滤波器二、函数fir2的各种形式如下:b = fir2(n,f,m)b = fir2(n,f,m,window)b = fir2(n,f,m,npt)b = fir2(n,f,m,npt,window)b = fir2(n,f,m,npt,lap)b = fir2(n,f,m,npt,lap,window)其中,向量f是指定频率点的幅度响应样本,与m定义的幅度响应样本对应;f和m具有相同的长度,并且f的第一个和最后一个分量分别是0和1;可以对f中的频点进行复制,从而跳变地逼近幅度响应指标。

基于MATLAB与CCS的FIR滤波器的C语言实现

基于MATLAB与CCS的FIR滤波器的C语言实现

基于MATLAB与CCS的FIR滤波器的C语言实现FIR(Finite Impulse Response)滤波器是一种数字滤波器,其输出仅取决于有限长度的输入序列。

MATLAB和CCS都提供了强大的工具和函数来设计和实现FIR滤波器。

下面将以一个具体的例子来介绍如何使用MATLAB和CCS来实现FIR滤波器的C语言实现。

首先,在MATLAB中使用fir1函数进行FIR滤波器的设计:```matlabfs = 1000; % 采样频率fpass = 200; % 通带截止频率fstop = 250; % 阻带起始频率Rp=1;%通带最大纹波(dB)Rs=60;%阻带最小衰减(dB)%计算通带和阻带频率f1 = fpass / (fs / 2);f2 = fstop / (fs / 2);% 使用fir1函数设计FIR滤波器b = fir1(30, [f1 f2], 'stop', kaiser(31, 3));%输出滤波器系数```然后,使用MATLAB中的codegen函数将FIR滤波器系数转换为C代码:```matlabcodegen -config:dll FIRFilter -args {b} -report```这将生成一个名为FIRFilter.c的文件,在该文件中包含了FIR滤波器的C语言实现。

接下来,在CCS中创建一个新的project,并将FIRFilter.c文件添加到该project中。

在Source Files文件夹中右键单击,并选择“Add Existing Files to Project”,然后选择FIRFilter.c文件。

接着,点击Build按钮来编译并生成可执行文件。

最后,在CCS中使用FIR滤波器的C语言实现进行信号处理。

可以通过以下代码示例来实现:```c#include <stdint.h>#include "FIRFilter.h"#define BUFFER_SIZE 1000//输入信号int16_t inputSignal[BUFFER_SIZE];//输出信号int16_t outputSignal[BUFFER_SIZE];int main(void)//初始化输入信号//...//调用FIR滤波器实现函数FIRFilter(inputSignal, outputSignal, BUFFER_SIZE);//处理输出信号//...return 0;```上述代码中,首先定义了输入和输出信号的数组,然后在main函数中调用FIR滤波器实现函数,并传入输入和输出信号的数组以及信号的长度。

matlab的fir滤波器设计

matlab的fir滤波器设计

matlab的fir滤波器设计FIR(Finite Impulse Response)滤波器是指响应有限长度序列输入的数字滤波器,它可以用于信号去噪、信号滤波和信号重构等领域。

MATLAB软件是目前应用广泛的数学软件工具箱,它可以实现数字信号处理、信号滤波和滤波器设计等功能。

下面我们来分步骤解析如何利用MATLAB完成FIR滤波器设计。

第一步,确定滤波器参数要设计FIR滤波器,需要明确设计的目的,例如信号去噪还是信号滤波。

同时,需要确定滤波器的参数,包括滤波器的采样率、通带边界、阻带边界等。

第二步,调用MATLAB工具箱并加载数据打开MATLAB软件,选择Digital Signal Processing Toolbox,调用fir1函数,该函数用于设计一般的低通、高通、带通和带阻FIR 滤波器。

加载需要滤波的数据,并将其存储在一个变量中。

第三步,进行滤波器设计在MATLAB命令行窗口中输入以下命令,来进行FIR滤波器的设计。

h = fir1(N, Wn, 'type');其中,N是滤波器的阶数,Wn是正规化的截止频率值,type是滤波器的类型,可以是低通、高通、带通和带阻滤波器。

例如,我们要设计一个30阶的低通滤波器,带通频带为0.3至0.7,采样率为1000Hz,输入以下命令:N = 30;Wn = [0.3 0.7];Btype = 'low';FIR_filter = fir1(N, Wn, Btype);第四步,使用FIR滤波器进行滤波使用filter函数,可以将设计好的FIR滤波器应用到加载的数据上,进行滤波操作。

Y_filtered = filter(FIR_filter, 1, X);其中,FIR_filter是设计好的FIR滤波器,X是加载的待滤波数据,Y_filtered是经过滤波器处理后的数据。

第五步,可视化输出结果通过绘制函数将滤波器的输入和输出信号进行可视化处理,观察滤波效果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于窗函数法FIR数字滤波器
数字滤波器的特点
数字信号处理主要是研究用数字或符号的序列来表示信号波 形,并用数字的方式去处理这些序列,把它们改变成在某种 意义上更为希望的形式,以便估计信号的特征参量,或削弱 信号中的多余分量和增强信号中的有用分量。
线性相位的条件
线性相位特点和幅度函数的特点
线性相位特点和幅度函数的特点
0 0
Kaiser窗 函 数
Kaiser窗 函 数 的 频 谱 0
-50
-100
幅 度 (db)
-150
-200
-250
-300
10
20
30
40
50
60
m 50
-350 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 w/pi
Magnitude (dB)
0
-50
-100
Hanning窗 函 数 的 频 谱 0
-50
0.8
-100
幅 度 (db)
-150
0.6
-200
0.4
-250
0.2
-300
-350
0
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
1
0
0
10
20
30
40
50
60
w/pi
n
h(n)
幅 度 ( db)
0.25 0.2
0.15 0.1
0.05 0
-0.05 -0.1
-0.15 -0.2
-0.25 0
Hanning窗 函 数 的 单 位 脉 冲 响 应
10
20
30
40
50
n
250
200
150
100
50
0
-50
-100
60
-150 0
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
1
w/pi
1 0.8 0.6 0.4 0.2
-150 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Normalized Frequency ( rad/sample)
0
Phase (degrees)
-500
-1000
-1500
-2000 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Normalized Frequency ( rad/sample)
FIR数字滤波器的设计原理
FIR数字滤波器的设计原理
数字滤波器的性能指标
各种理想数字滤波器的幅度频率 响应
窗函数设计法
矩形窗
三角窗亦称费杰(Fejer)窗
汉宁(Hanning)窗
海明(Hamming)窗
几种常用的窗函数的时域和频域 波形
设计实例
设计实例
设计实例
Hanning窗 函 数 1
相关文档
最新文档