实验4 基于MATLAB的FIR数字滤波器设计
- 格式:doc
- 大小:328.50 KB
- 文档页数:16
实验4 基于MATLAB 的FIR 数字滤波器设计一、 实验目的(1) 加深对数字滤波器的常用指标理解。
(2) 学习数字滤波器的设计方法。
二、 实验原理 低通滤波器1()1()P P P SS H H δδδπ⎧-≤Ω≤+Ω≤Ω⎪⎨Ω≤Ω≤Ω≤⎪⎩低通滤波器的常用指标:1、 通带边缘频率P Ω,2、 阻带边缘频率SΩ ,3、 通带起伏P δ,4、通带峰值起伏])[1(log2010dB p pδα--=,5、阻带起伏sδ,最小阻带衰减])[(log 2010dB s S δα-=。
三、 要求 (1)在MA TLAB 中,熟悉函数fir1、kaiserord 、remezord 、remez 的使用;B = fir1(n,Wn,'high','noscale')设计滤波器;[n,Wn,beta,ftype] = kaiserord(f,a,dev)估计滤波器阶数;[n,fo,ao,w] = remezord (f,a,dev ,fs)计算等波纹滤波器阶数n 和加权函数w(ω); B=remez(n,f,a)进行等波纹滤波器的设计(2)阅读附录中的实例,学习FIR 滤波器的设计方法及其在MA TLAB 中的实现;(3)给出FIR 数字滤波器的冲激响应,绘出它们的幅度和相位频响曲线,讨论它们各自的实现形式和特点。
四、 实验内容利用MA TLAB 编程,分别用窗函数法和等波纹滤波器法设计两种FIR 数字滤波器,指标要求如下:通带边缘频率:π45.01=ΩP ,π65.02=ΩP ,通带峰值起伏:][1dB p≤α。
阻带边缘频率:π3.01=ΩS ,π75.02=ΩS ,最小阻带衰减:][40dB S ≥α。
附录:例1 用凯塞窗设计一FIR 低通滤波器,通带边界频率π3.0=Ωp ,阻带边界频率π5.0=Ωs ,阻带衰减 不小于50dB 。
S Ω-PΩ-P SΩPassband StopbandTransitionbandFig 1 Typical magnitudespecification for a digital LPF解首先由过渡带宽和阻带衰减来决定凯塞窗的N和π2.0=Ω-Ω=∆Ωps,,上图给出了以上设计的频率特性,(a) 为N=30直接截取的频率特性(b)为凯塞窗设计的频率特性。
一、引言数字滤波器是数字信号处理中至关重要的组成部分,它能够对数字信号进行滤波处理,去除噪音和干扰,提取信号中的有效信息。
其中,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数字滤波器设计
作者:王春兴张彬
来源:《现代电子技术》2011年第18期
摘要:提出FIR数字滤波器的设计方案,并基于Matlab实现滤波仿真。
通过使用Matlab 信号处理工具箱提供的函数,选择适当的窗函数编写程序,其中窗函数按照实际信号的处理需求,参数折中选择。
实验获得了比较理想的滤波器特性,可以实现较好的滤波作用。
而且在实际应用中只需按需求修改滤波器参数,并结合程序的相应改动,即可实现不同功能的滤波器。
另外,介绍了利用FDATool设计滤波器的方法,简单修改参数即可实现多种滤波器。
基于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的FIR和IIR数字滤波器的设计一、本文概述随着数字信号处理技术的飞速发展,数字滤波器作为其中的核心组件,已经广泛应用于通信、音频处理、图像处理、生物医学工程等诸多领域。
在数字滤波器中,有限脉冲响应(FIR)滤波器和无限脉冲响应(IIR)滤波器是最常见的两种类型。
它们各自具有独特的优点和适用场景,因此,对这两种滤波器的深入理解和设计掌握是工程师和研究人员必备的技能。
本文旨在通过MATLAB这一强大的工程计算工具,详细介绍FIR 和IIR数字滤波器的设计原理、实现方法以及对比分析。
我们将简要回顾数字滤波器的基本概念和分类,然后重点阐述FIR和IIR滤波器的设计理论,包括窗函数法、频率采样法、最小均方误差法等多种设计方法。
接下来,我们将通过MATLAB编程实现这些设计方法,并展示如何根据实际应用需求调整滤波器参数以达到最佳性能。
本文还将对FIR和IIR滤波器进行性能对比,分析它们在不同应用场景下的优缺点,并提供一些实用的设计建议。
我们将通过几个典型的应用案例,展示如何在MATLAB中灵活应用FIR和IIR滤波器解决实际问题。
通过阅读本文,读者将能够深入理解FIR和IIR数字滤波器的设计原理和实现方法,掌握MATLAB在数字滤波器设计中的应用技巧,为未来的工程实践和研究工作打下坚实的基础。
二、FIR滤波器设计有限脉冲响应(FIR)滤波器是一种数字滤波器,其特点是其脉冲响应在有限的时间后为零。
因此,FIR滤波器是非递归的,没有反馈路径,从而保证了系统的稳定性。
在设计FIR滤波器时,我们主要关注的是滤波器的阶数、截止频率和窗函数的选择。
在MATLAB中,有多种方法可以用来设计FIR滤波器。
其中,最常用的方法是使用fir1函数,该函数可以设计一个线性相位FIR滤波器。
该函数的基本语法是b = fir1(n, Wn),其中n是滤波器的阶数,Wn是归一化截止频率,以π为单位。
该函数返回一个长度为n+1的滤波器系数向量b。
陕西理工学院课程设计基于MATLAB的FIR数字低通滤波器设计作者:周龙刚(陕西理工学院物理与电信工程学院通信工程专业 2011级4班,陕西汉中 723003)指导老师:井敏英[摘要]FIR数字滤波器是数字信号处理的一个重要组成部分,由于FIR数字滤波器具有严格的线性相位,因此在信息的采集和处理过程中得到了广泛的应用。
本文介绍了FIR数字滤波器的概念和线性相位的条件,分析了窗函数法、频率采样法和等波纹逼近法设计FIR滤波器的思路和流程。
在分析三种设计方法原理的基础上,借助Matlab仿真软件工具箱中的fir1实现窗函数法中的哈明窗设计FIR低通滤波器。
[关键词]FIR数字滤波器;线性相位窗函数;法哈明窗;MatlabDesigning FIR low-pass digital filter based on VHDLZhoulonggang(Grade11,Class4,Major of Communication Engineering,School of Physics and Telecommunication Engineering , Shaanxi University of Technology,Hanzhong 723003,Shaanxi)Tutor:JingYingMinAbstract:FIR digital filter is an important part of digital signal processing,the FIR digitalfilter with linear phase, so it has been widely applied in the collection and processing of information in the course of. This paper introduces the concept of FIR digital filter with linear phase conditions, analysis of the window functionmethod and frequency sampling method and the ripple approximation method ofFIR filter design ideas and processes. Based on analyzing the principle of three kinds of design method, using Matlab simulation software fir1 toolbox in design and implementation of FIR Hamming window window function method in the low pass filter.Keywords:FIR digital filter, linear phase,the window function method,Hamming window,Matlab目录引言 (1)1. 基本原理 ............................................................................................................................................... - 1 -1.1 FIR数字滤波器概述 ................................................................................................................... - 1 -1.2 FIR数字滤波器线性相位定义 ................................................................................................... - 2 -1.3 FIR数字滤波器线性相位时域条件 ........................................................................................... - 2 -2. 系统设计 ............................................................................................................................................... - 3 -2.1 FIR数字滤波器的窗函数设计方法 ........................................................................................... - 3 -2.1.1 窗函数法的设计思路....................................................................................................... - 3 -2.1.2 常见窗函数介绍............................................................................................................... - 3 -2.1.3 吉布斯效应....................................................................................................................... - 5 -2.2 FIR数字滤波器频率采样设计法 ............................................................................................ - 5 -2.3 FIR数字滤波器等波纹逼近设计法 ........................................................................................... - 6 -3 详细设计 ................................................................................................................................................ - 7 -3.1 程序设计流程.............................................................................................................................. - 7 -3.2 Matlab简介 .................................................................................................................................. - 7 -3.3窗函数法的Matlab实现 ............................................................................................................. - 8 -3.3.1 fir1函数介绍..................................................................................................................... - 8 -3.3.2基于fir1函数的窗函数法FIR滤波器设计.................................................................... - 8 -4 总结 .................................................................................................................................................. - 11 - 致谢 ...................................................................................................................................................... - 11 - 参考文献 .................................................................................................................................................. - 11 - 附录A . (14)引言随着信息科学和计算机技术的不断发展,数字信号处理(DSP ,Digital Signal Processing)的理论和技术也得到了飞速的发展,并逐渐成为一门重要的学科,它的重要性在日常通信、图像处理、遥感、声纳、生物医学、地震、消费电子、国防军事、医疗方面等显得尤为突出。
FIR数字滤波器设计实验_完整版本实验旨在设计一种FIR数字滤波器,以滤除信号中的特定频率成分。
下面是完整的实验步骤:材料:-MATLAB或其他支持数字信号处理的软件-计算机-采集到的信号数据实验步骤:1.收集或生成需要滤波的信号数据。
可以使用外部传感器采集数据,或者在MATLAB中生成一个示波器信号。
2. 在MATLAB中打开一个新的脚本文件,并导入信号数据。
如果你是使用外部传感器采集数据,请将数据以.mat文件的形式保存,并将其导入到MATLAB中。
3.对信号进行预处理。
根据需要,你可以对信号进行滤波、降噪或其他预处理操作。
这可以确保信号数据在输入FIR滤波器之前处于最佳状态。
4.确定滤波器的设计规范。
根据信号的特性和要滤除的频率成分,确定FIR滤波器的设计规范,包括滤波器的阶数、截止频率等。
你可以使用MATLAB中的函数来帮助你计算滤波器参数。
5. 设计FIR滤波器。
使用MATLAB中的fir1函数或其他与你所使用的软件相对应的函数来设计满足你的规范条件的FIR滤波器。
你可以选择不同的窗函数(如矩形窗、汉宁窗等)来平衡滤波器的频域和时域性能。
6. 对信号进行滤波。
将设计好的FIR滤波器应用到信号上,以滤除特定的频率成分。
你可以使用MATLAB中的conv函数或其他相应函数来实现滤波操作。
7.分析滤波效果。
将滤波后的信号与原始信号进行比较,评估滤波效果。
你可以绘制时域图、频域图或其他特征图来分析滤波效果。
8.优化滤波器设计。
如果滤波效果不理想,你可以调整滤波器设计参数,重新设计滤波器,并重新对信号进行滤波。
这个过程可能需要多次迭代,直到达到最佳的滤波效果。
9.总结实验结果。
根据实验数据和分析结果,总结FIR滤波器设计的优点和缺点,以及可能的改进方向。
通过完成以上实验步骤,你将能够设计并应用FIR数字滤波器来滤除信号中的特定频率成分。
这对于许多信号处理应用都是非常重要的,如音频处理、图像处理和通信系统等。
分类号编号XXXXNorth China Institute Of Water Conservancy And Hydroelectric Power 毕业设计题目基于Matlab的FIR数字滤波器设计学院信息工程学院专业通信工程姓名学号指导教师2011年 5月20日基于Matlab的FIR数字滤波器设计摘要在数字控制系统中输入信号中所含的干扰对系统的性能会产生很大的影响,因此需要对输入信号进行处理,以提取有用信号。
有限长冲激响应(FIR)滤波器在数字信号处理中发挥着重要作用,采用Matlab软件对FIR数字滤波器进行仿真设计,简化了设计中繁琐的计算。
本文采用窗函数法,频率采样法和优化设计方法,通过调用Matlab函数设计FIR数字滤波器。
绘制对应的幅频特性曲线。
最后用基于Matlab函数设计的FIR数字滤波器进行语音滤波处理,通过滤波前后信号的频谱图和生成的声音文件的对比,分析不同滤波器的滤波效果。
关键词:FIR数字滤波器,仿真,窗函数法,频率取样法,优化设计方法AbstractIn digital control system, interference, which is mixed in the input signal, has a great effect on performance of the system. Therefore, processing of input signal has to be done to get useful signal. Finite impulse response (FIR) filter plays an important role in the processing of digital signal. Designing the FIR filter by Matlab can simplify the complicated computation in simulation and improve the performance.By using the methods of window function, frequency sampling and optimization techniques, the design of FIR digital filter has been processed in Matlab. In the view of the designed program of Matlab and the figure of the amplitude-frequency characterization. At last, by using the FIR digital filters which have been designed to process the sound signal based on the Matlab function, the filtering effect of different digital filters is analyzed by comparing the signal’s spectrum viewers and the sound files which have been generated. The experimental results show that the FIR filters designed in this paper are effective.Key words: FIR digital filter, simulation, windowing method, frequency sampling method, optimization techniques目录摘要 (I)Abstract........................................................... I I 1 数字滤波器 (1)1.1 数字滤波器简介 (1)1.2 IIR数字滤波器 (1)1.3 FIR数字滤波器 (2)1.4 IIR与FIR数字滤波器的比较 (4)2 Matlab及电子通信系统仿真简介 (5)2.1 Matlab简介 (5)2.1.1 基本功能 (5)2.1.2 Matlab的优势 (5)2.2 电子通信系统的仿真简介 (5)2.2.1 通信与电子系统仿真的概念 (5)2.2.2 计算机仿真的步骤 (6)2.2.3 电子通信系统计算机仿真的优点 (6)2.2.4 电子通信系统计算机仿真的局限性 (7)3 FIR数字滤波器的设计 (8)3.1 窗函数法设计FIR滤波器 (8)3.2 频率取样法设计线性相位FIR滤波器 (11)3.3 线性相位FIR滤波器的优化设计 (13)4 利用Matlab实现FIR滤波器设计 (15)4.1 窗函数法的Matlab实现 (15)4.2 频率取样法的Matlab实现 (22)4.3 优化设计的Matlab实现 (26)4.4 利用滤波器处理加有噪声的音频波形 (32)参考文献 (37)附录 (38)附录一外文原文及翻译 (38)外文原文 (38)外文翻译 (51)附录二利用Matlab实现FIR滤波器设计参考程序 (61)1 数字滤波器1.1 数字滤波器简介数字滤波器是一个离散的系统。
基于MATLAB 的FIR 数字滤波器设计摘自:张登奇,李望移.基于MATLAB 的FIR 数字滤波器设计[J]. 计算机时代,2007,(11)摘 要:数字滤波是数字信号处理的重要内容,数字滤波器可分为FIR 和IIR 两大类。
文章根据FIR 滤波器的设计原理,详细介绍了MATLAB 环境下FIR 数字滤波器的设计方法和操作步骤,并列出了设计实例程序及运行结果。
关键词:MATLAB ;数字信号处理;数字滤波器;有限脉冲响应2 FIR 数字滤波器的窗口设计法窗口设计法是从时域出发,将理想滤波器的单位脉冲响应截取一段作为传输函数的系数。
通常情况下,滤波器指标往往在频域给出,算出的理想单位脉冲响应一般是非因果、无限长、物理上不可实现的,需先截短再右移使之成为有限长因果序列,只要截取的长度和方法合理,总能满足频域指标要求。
截短就是加窗,矩形窗最简单,在频域属最小平方逼近,但峰肩和波纹不太理想。
一般希望窗函数的频谱主瓣尽可能地窄,以获得较陡的过渡带,同时能量又要尽量集中在主瓣,以减小峰肩和波纹,进而增加阻带衰减。
实际工程中常用窗的特性及MATLAB 函数比较如表1所示。
表1 常用窗函数性能比较利用窗口设计法设计FIR 数字滤波器的过程:)()()()()(ωωj D TFT n w d ID TFT j d e H n h n h e H −−→−−−→−−−→−⨯具体操作步骤如下:1、对设计指标进行归一化处理。
数字滤波器传输函数只与频域的相对值有关,故在设计时可先将滤波器设计指标对采样频率进行归一化处理,归一化公式为:2、根据阻带衰减要求和过渡带宽,由表1选择窗函数的类型并估计窗口长度M ,此时滤波器的阶数为M-1(注意窗口长度与滤波器类型的关系)。
3、根据滤波器的理想频响求出理想单位脉冲响应)(n h d 。
4、将理想单位脉冲响应与窗函数相乘,得系统单位脉冲响应。
5、用freqz 函数验算技术指标是否满足要求。
实验四 FIR数字滤波器的设计(实验报告)《数字信号处理》实验报告学院专业电子信息工程班级姓名学号时间实验四FIR数字滤波器的设计一、实验目的1、掌握用窗函数法、频率采样法及优化算法设计FIR 滤波器的原理及步骤,学会相应的MATLAB编程。
2、熟悉具有线性相位的FIR滤波器的幅频特性和相频特性。
3、了解各种不同窗函数对滤波器性能的影响。
二、实验内容1、用窗函数法设计一个FIR数字低通滤波器LPDF,验证设计结果的幅频特性和相频特性。
要求:通带截止频率ωp=π,通带波纹Rp=,阻带截止频率ωs=π,阻带衰减As=50dB。
50Magnitude (dB) Frequency ( rad/sample) (degrees)- Frequency ( rad/sample)图1-1 低通滤波器LPDF的频率响应图1-2 低通滤波器LPDF的零极点图单位脉冲响应h(n)的数据长度= 45 对称性为:偶对称得到的滤波器通带边界点( 326 )和阻带边界点参数2、用窗函数法设计一个FIR数字高通滤波器HPDF,验证设计结果的幅频特性和相频特性。
要求:通带截止频率ωp=π,通带波纹Rp=,阻带截止频率ωs=π,阻带衰减As=50dB。
Real Part50Magnitude (dB) Frequency ( rad/sample) (degrees) Frequency ( rad/sample)图2-1 高通滤波器HPDF的频率响应图2-2 高通滤波器HPDF的零极点图-滤波器H(z)零点个数= h(n)对称性为:偶对称得到的滤波器通带边界点( 426 )和阻带边界点参数3、用窗函数法设计一个FIR数字带通滤波器BPDF,验证设计结果的幅频特性和相频特性。
要求:阻带截止频率ωs1=π,衰减65dB,通带截止频率ωp1=π→ωp2=π范围内衰减,高端阻带截止频率ωs2=π,阻带衰减As=65dB。
501Magnitude (dB)0-50-100Imaginary Frequency ( rad/sample) Frequency ( rad/sample) (degrees)0-20XX-4000-6000图3-1 带通滤波器BPDF的频率响应图3-2 带通滤波器BPDF的零极点图 FIR滤波器的阶次= 111 h(n)对称性为:偶对称得到的滤波器通带边界点( 298、704 )和阻带边界点参数中心频率:通带带宽:4、用窗函数法设计一个FIR数字带阻滤波器BSDF,验证设计结果的幅频特性和相频特性。
fir数字滤波器设计实验报告FIR数字滤波器设计实验报告概述数字滤波器是数字信号处理中的重要组成部分,广泛应用于音频、图像、视频等领域。
其中,FIR数字滤波器是一种常见的数字滤波器,具有线性相位、稳定性好、易于实现等优点。
本实验旨在设计一种基于FIR数字滤波器的信号处理系统,实现对信号的滤波和降噪。
实验步骤1. 信号采集需要采集待处理的信号。
本实验采用的是模拟信号,通过采集卡将其转换为数字信号,存储在计算机中。
2. 滤波器设计接下来,需要设计FIR数字滤波器。
为了实现对信号的降噪,我们选择了低通滤波器。
在设计滤波器时,需要确定滤波器的阶数、截止频率等参数。
本实验中,我们选择了8阶低通滤波器,截止频率为500Hz。
3. 滤波器实现设计好滤波器后,需要将其实现。
在本实验中,我们采用MATLAB 软件实现FIR数字滤波器。
具体实现过程如下:定义滤波器的系数。
根据滤波器设计的公式,计算出系数值。
利用MATLAB中的filter函数对信号进行滤波。
将采集到的信号作为输入,滤波器系数作为参数,调用filter函数进行滤波处理。
处理后的信号即为滤波后的信号。
4. 结果分析需要对处理后的信号进行分析。
我们可以通过MATLAB绘制出处理前后的信号波形图、频谱图,比较它们的差异,以评估滤波器的效果。
结果显示,经过FIR数字滤波器处理后,信号的噪声得到了有效的降低,滤波效果较好。
同时,频谱图也显示出了滤波器的低通特性,截止频率处信号衰减明显。
结论本实验成功设计并实现了基于FIR数字滤波器的信号处理系统。
通过采集、滤波、分析等步骤,我们实现了对模拟信号的降噪处理。
同时,本实验还验证了FIR数字滤波器的优点,包括线性相位、稳定性好等特点。
在实际应用中,FIR数字滤波器具有广泛的应用前景。
实验四 用窗函数法设计FIR 滤波器一、实验目的1、熟悉FIR 滤波器设计的基本方法。
2、掌握用户窗函数设计FIR 数字滤波器的原理及方法,熟悉相应的计算机高级语言编程。
3、熟悉线性相位FIR 滤波器的幅频特性和相位特性。
4、了解各种不同窗函数对滤波器性能的响应。
二、实验原理和方法(一)FIR 滤波器的设计FIR 滤波器具有严格的相位特性,这对于语音信号处理和数据传输是很重要的。
目前FIR 滤波器的设计方法主要有三种:窗函数法、频率取样法和切比雪夫等波纹逼近的最优化设计方法。
本实验中的窗函数法比较简单,可应用现成的窗函数公式,在技术指标要求不高的时候是比较灵活方便的。
它是从时域出发,用一个窗函数截取一个理想的)(n h d 得到h(n),以有限长序列h(n)近似理想的)(n h d :如果从频域出发,用理想的)(jw d e h 在单位圆上等角度取样得到H (k ),根据h(k)得到H(z)将逼近理想的)(z H d 这就是频率取样法。
(二)窗函数设计法同其它的的数字滤波器设计的方法一样,用窗函数设计滤波器也是首先要对滤波器提出性能指标。
一般是给定一个理想的频率响应)(jw d e h ,使所设计的FIR 滤波器的频率响应)(jw e h 去逼近所要求的理想的滤波器的响应)(jw d e h 窗函数设计的任务在于寻找一个可实现(有限长单位脉冲响应)的传递函数。
∑-=-=10)()(N n jw jwn e n h e H 去逼近)(jw d e h 。
我们知道,一个理想的频率响应)(jw d e h 的傅里叶变换⎰=ππ20)(21)(dw e e H n h jwn jw d d 所得到的理想的单位脉冲响应)(n h d 往往是一个无限长序列,对)(n h d 经过适当的加权、截取处理才得到一个所需要的有限长脉冲响应序列。
对应不同的加权、截断,就有不同的窗函数。
所要寻找的滤波器脉冲响应就等于理想脉冲响应和窗函数的乘积。
实验八 用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与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滤波器实现函数,并传入输入和输出信号的数组以及信号的长度。
实验4 基于MATLAB 的FIR 数字滤波器设计实验目的:加深对数字滤波器的常用指标和设计过程的理解。
实验原理:低通滤波器的常用指标:P P P for H Ω≤Ω+≤Ω≤-,1)(1δδπδ≤Ω≤Ω≤ΩS S for H ,)(通带边缘频率P Ω,阻带边缘频率S Ω ,通带起伏P δ,通带峰值起伏])[1(log 2010dB p pδα--=,阻带起伏s δ,最小阻带衰减])[(log 2010dB s S δα-=。
数字滤波器有IIR 和FIR 两种类型,它们的特点和设计方法不同。
在MATLAB 中,可以用b=fir1(N,Wn,’ftype’,taper) 等函数辅助设计FIR 数字滤波器。
N 代表滤波器阶数;Wn 代表滤波器的截止频率(归一化频率),当设计带通和带阻滤波器时,Wn 为双元素相量;ftype 代表滤波器类型,如’high ’高通,’stop ’带阻等;taper 为窗函数类型,默认为海明窗,窗系数需要实现用窗函数blackman, hamming,hanning chebwin, kaiser 产生。
例1 用凯塞窗设计一FIR 低通滤波器,通带边界频率π3.0=Ωp ,阻带边界频率π5.0=Ωs ,阻带衰减不小于50dB 。
解 首先由过渡带宽和阻带衰减来决定凯塞窗的N 和π2.0=Ω-Ω=∆Ωp s ,,S PP SPassband StopbandTransition bandFig 1 Typical magnitude specification for a digital LPF上图给出了以上设计的频率特性,(a) 为N=30直接截取的频率特性(b)为凯塞窗设计的频率特性。
凯塞窗设计对应的MATLAB程序为:wn=kaiser(30,4.55);nn=[0:1:29];alfa=(30-1)/2;hd=sin(0.4*pi*(nn-alfa))./(pi*(nn-alfa));h=hd.*wn;[h1,w1]=freqz(h,1);或者: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('归一化频率/ ') ;ylabel('幅度/dB') ;还可以使用[n,Wn,beta,ftype] = kaiserord(f,a,dev)函数来估计滤波器阶数等,得到凯塞窗滤波器:fcuts = [0.3 0.5]; %归一化频率omega/pimags = [1 0];devs = [0.05 10^(-2.5)];[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs); %计算出凯塞窗N,beta的值hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');freqz(hh);实际中,一般调用MATLAB信号处理工具箱函数remezord来计算等波纹滤波器阶数N和加权函数W(ω),调用函数remez可进行等波纹滤波器的设计,直接求出滤波器系数。
函数remezord中的数组fedge 为通带和阻带边界频率,数组mval是两个边界处的幅值,而数组dev 是通带和阻带的波动,fs是采样频率单位为Hz。
例2 利用雷米兹交替算法设计等波纹滤波器,设计一个线性相位低通FIR数字滤波器,其指标为:通带边界频率f c=800Hz,阻带边界f r=1000Hz,通带波动=4000Hz。
阻带最小衰减At=40dB,采样频率f解在MATLAB中可以用remezord 和remez两个函数设计,其结果如图2,MATLAB程序如下:fedge=[800 1000];mval=[1 0];dev=[0.0559 0.01];fs=4000;[N,fpts,mag,wt]=remezord(fedge,mval,dev,fs);b=remez(N,fpts,mag,wt);[h,w]=freqz(b,1,256);plot(w*2000/pi,20*log10(abs(h)));grid;xlabel('频率/Hz') ;ylabel('幅度/dB');一、实验内容: 利用MATLAB 编程设计一个数字带通滤波器,指标要求如下:通带边缘频率:π45.01=ΩP ,π65.02=ΩP ,通带峰值起伏:][1dB p ≤α。
阻带边缘频率:π3.01=ΩS ,π75.02=ΩS ,最小阻带衰减:][40dB S ≥α。
分别用窗函数法和等波纹滤波器法设计两种FIR 数字滤波器。
实验要求:给出FIR 数字滤波器的冲激响应,绘出它们的幅度和相位频响曲线,讨论它们各自的实现形式和特点。
1-1)用窗函数法实现:调用函数[n,wn,bta,ftype]=kaiserord (f ,a ,dev ,fs )参数:f=[0.3 0.45 0.65 0.8]为对应数字频率π3.01=ΩS ,π45.01=ΩP ,π65.02=ΩP ,,π75.02=ΩSa=[0 1 0]为由f 指定的各个频带上的幅值向量,一般只有0和1表示;和f 长度关系为(2*a 的长度)—2=(f 的长度)devs=[0.01 0.1087 0.01]用于指定各个频带输出滤波器的频率响应与其期望幅值之间的最大输出误差或偏差,长度与a 相等,计算公式:阻带衰减误差=,通带波动衰减误差=fs 缺省值为2HZ>> [n,wn,bta,ftype]=kaiserord([0.3 0.45 0.65 0.8],[0 1 0],[0.01 0.1087 0.01]);%用kaiserord 函数估计出滤波器阶数n 和beta 参数 >> h1=fir1(n,wn,ftype,kaiser(n+1,bta),'noscale'); >> [hh1,w1]=freqz(h1,1,256); >> figure(1) >> subplot(2,1,1)>> plot(w1/pi,20*log10(abs(hh1))) >> grid>> xlabel('归一化频率w');ylabel('幅度/db'); >> subplot(2,1,2) >> plot(w1/pi,angle(hh1)) >> grid>> xlabel('归一化频率w');ylabel('相位/rad');h1 =Columns 1 through 80.0041 0.0055 -0.0091 -0.0018 -0.0056 -0.0000 0.0391 -0.0152 Columns 9 through 16-0.0381 0.0077 -0.0293 0.0940 0.0907 -0.2630 -0.0517 0.3500 Columns 17 through 24-0.0517 -0.2630 0.0907 0.0940 -0.0293 0.0077 -0.0381 -0.0152 Columns 25 through 310.0391 -0.0000 -0.0056 -0.0018 -0.0091 0.0055 0.0041图4-1如果直接用freqz(h1,1,256);画图得:1-2)用等波纹法设计:调用函数[n,fpts,mag,wt]=remezord(f,a,dev)f=[0.3 0.45 0.65 0.8]a=[0 1 0]dev=[0.01 0.1087 0.01]其含义同函数[n,wn,bta,ftype]=kaiserord(f,a,dev,fs)中的参数相同。
>> [n,fpts,mag,wt]=remezord([0.3 0.45 0.65 0.8],[0 1 0],[0.01 0.10870.01]);%用remezord函数估算出remez函数要用到的阶n、归一化频带边缘矢量fpts、频带内幅值响应矢量mag及加权矢量w,使remez 函数设计出的滤波器满足f、a及dev指定的性能要求。
>> h2=remez(n,fpts,mag,wt);%设计出等波纹滤波器>> [hh2,w2]=freqz(h2,1,256);>> figure(2)>> subplot(2,1,1)>> plot(w2/pi,20*log10(abs(hh2)))>> grid>> xlabel('归一化频率w');ylabel('幅度/db');>> subplot(2,1,2)>> plot(w2/pi,angle(hh2))>> grid>> xlabel('归一化频率w');ylabel('相位/rad');>> h2h2 =Columns 1 through 9-0.0013 0.0092 -0.0255 -0.0642 0.1177 0.0922 -0.2466 -0.0466 0.3116Columns 10 through 17-0.0466 -0.2466 0.0922 0.1177 -0.0642 -0.0255 0.0092 -0.0013图4-2 用freqz(h2,1,256);直接得图:二、对课本作业9.23画图。
2-1)用汉宁窗实现:1)手动计算>> n=0.001:58.001;>> hd=sin(0.18125*pi*(n-29))./(pi*(n-29));>> win=0.5+0.5*cos(2*pi*(n-29)/58);>> h1=2*cos(pi*(n-29)/2).*hd.*win;>> [hh1,w1]=freqz(h1,1,256);>> figure(1)>> subplot(2,1,1)>> plot(w1,20*log10(abs(hh1)))>> grid>> xlabel('数字频率w/rad');ylabel('幅度/db');>> subplot(2,1,2)>> plot(w1,angle(hh1))>> grid>> xlabel('数字频率w/rad');ylabel('相位/rad');图4-32-2)用自带的fir1函数:>> n=59;>> wn=[3/8 5/8];>> h2=fir1(n,wn,'bandpass',hann(n+1));>> [hh2,w2]=freqz(h2,1,256);>> figure(2)>> subplot(2,1,1)>> plot(w2,20*log10(abs(hh2)))>> xlabel('数字频率w/rad');ylabel('幅度/db');>> grid>> subplot(2,1,2)>> plot(w2,angle(hh2))>> xlabel('数字频率w/rad');ylabel('相角/rad');>> grid图4-42-3)用等波纹法设计:调用函数[n,fpts,mag,wt]=remezord(f,a,dev)f=[0.2625 0.375 0.625 0.7375]a=[0 1 0]dev=[0.01 0.1087 0.01]>> [n,fpts,mag,wt]=remezord([0.2625 0.375 0.625 0.7375],[0 1 0],[0.01 0.1087 0.01]); >> h2=remez(n,fpts,mag,wt);>> [hh2,w2]=freqz(h2,1,256);>> figure(2)>> subplot(2,1,1)>> plot(w2/pi,20*log10(abs(hh2)))>> grid>> xlabel('归一化频率w');ylabel('幅度/db');>> subplot(2,1,2)>> plot(w2/pi,angle(hh2))>> grid>> xlabel('归一化频率w');ylabel('相位/rad');>> h2画图为:另外带通滤波器还可以用低通和高通级联的方法实现,因为步骤过多,这里不作讨论。