实时FIR滤波器的实现
- 格式:doc
- 大小:3.17 MB
- 文档页数:23
单片机fir滤波器算法的实现单片机是一种常用的嵌入式系统电路,可以通过编程控制其功能。
其中之一的应用就是实现滤波器算法,用于信号处理和数据分析。
FIR滤波器是一种常见的数字滤波器,通过有限长度的冲激响应函数来处理输入信号。
在本文中,我将探讨单片机中FIR滤波器算法的实现。
1. FIR滤波器简介FIR滤波器,全称为有限冲激响应滤波器(Finite Impulse Response Filter),它的输出只依赖于当前和过去的输入样本,不依赖于未来的输入样本。
FIR滤波器常用于去除信号中的噪声、平滑信号、滤除频率特定的组分等应用。
2. FIR滤波器算法原理FIR滤波器的算法原理是基于信号与滤波器的卷积运算。
具体来说,FIR滤波器将输入信号与一组系数进行加权求和,得到输出信号。
这组系数称为滤波器的冲激响应函数,决定了滤波器的频率特性和幅度响应。
3. 单片机中的FIR滤波器实现步骤1) 定义滤波器的系数。
根据需要设计陷波器或带通滤波器等,确定系数的数量和取值。
2) 获取输入信号样本。
通过单片机的模数转换器(ADC)获取输入信号的模拟样本值。
3) 实现滤波器算法。
将输入信号样本与滤波器系数进行加权求和,得到输出信号样本。
4) 输出滤波后的信号。
通过单片机的数模转换器(DAC)将输出信号样本转换为模拟信号输出。
4. 单片机中FIR滤波器算法的实现要点- 系数选择:根据所需的频率响应和滤波器类型,选择适当的系数。
常见的系数设计方法包括窗函数法、最小二乘法等。
- 数据类型选择:根据单片机的数据类型和精度要求,选择适当的数据类型表示滤波器系数和输入/输出信号。
- 内存管理:考虑到单片机的资源限制,合理管理存储器来存储滤波器系数和中间计算结果。
- 实时性要求:根据实时性要求,合理选择单片机的工作频率和计算速度,确保滤波器算法能够满足实时处理的需求。
5. 我的观点和理解FIR滤波器是一种常用的滤波器算法,其在单片机中的实现能够实现信号处理和数据分析的功能。
数字信号处理实验报告-FIR滤波器的设计与实现在数字信号处理中,滤波技术被广泛应用于时域处理和频率域处理中,其作用是将设计信号减弱或抑制被一些不需要的信号。
根据滤波器的非线性抑制特性,基于FIR(Finite Impulse Response)滤波器的优点是稳定,易设计,可以得到较强的抑制滤波效果。
本实验分别通过MATLAB编程设计、实现、仿真以及分析了一阶低通滤波器和平坦通带滤波器。
实验步骤:第一步:设计一阶低通滤波器,通过此滤波器对波型进行滤波处理,分析其对各种频率成分的抑制效果。
为此,采用零极点线性相关算法设计滤波器,根据低通滤波器的特性,设计的低通滤波器的阶次为n=10,截止频率为0.2π,可以使设计的滤波器被称为一阶低通滤波器。
第二步:设计平坦通带滤波器。
仿真证明,采用兩個FIR濾波器組合而成的阻礙-提升系統可以實現自定義的總三值響應的設計,得到了自定義的總三值響應函數。
实验结果:1、通过MATLAB编程,设计完成了一阶低通滤波器,并通过实验仿真得到了一阶低通滤波器的频率响应曲线,证明了设计的滤波器具有良好的低通性能,截止频率为0.2π。
在该频率以下,可以有效抑制波形上的噪声。
2、设计完成平坦通带滤波器,同样分析其频率响应曲线。
从实验结果可以看出,此滤波器在此频率段内的通带性能良好,通带范围内的信号透过滤波器后,损耗较小,滞后较小,可以满足各种实际要求。
结论:本实验经过实验操作,设计的一阶低通滤波器和平坦通带滤波器具有良好的滤波特性,均已达到预期的设计目标,证明了利用非线性抑制特性实现FIR滤波处理具有较强的抑制滤波效果。
本实验既有助于深入理解FIR滤波器的设计原理,也为其他应用系统的设计和开发提供了指导,进而提高信号的处理水平和质量。
FIR滤波器及其DSP实现FIR(Finite Impulse Response)滤波器是一种常见的数字滤波器,它具有有限的脉冲响应。
与IIR(Infinite Impulse Response)滤波器相比,FIR滤波器具有线性相位特性,并且可以实现稳定的滤波效果。
FIR滤波器的核心是其冲激响应,即滤波器的输出响应。
FIR滤波器的输出可以通过对输入信号和滤波器的冲激响应进行卷积来实现。
为了得到所需的滤波效果,需要设计滤波器的冲激响应。
常见的方法包括频域设计和时域设计两种。
频域设计方法主要利用频率响应来设计FIR滤波器的冲激响应。
这包括将所需滤波特性转化为频率域中的理想滤波器响应,然后通过反变换得到冲激响应。
常见的频域设计方法有窗函数法、最优逼近法和频带优化法等。
窗函数法是最简单的频域设计方法之一,通过将理想滤波器的频率响应与窗函数的频率响应相乘得到FIR滤波器的冲激响应。
常用的窗函数有矩形窗、汉宁窗、汉明窗等。
窗函数法的优点是简单易用,但实现的FIR 滤波器在频域存在较大的过渡带宽。
因此,需要根据具体应用需求选择合适的窗函数。
最优逼近法是一种基于最优化理论的频域设计方法。
它通过将所需滤波特性定义为目标函数,利用优化算法来最小化目标函数与实际滤波器响应之间的差距,从而得到FIR滤波器的冲激响应。
最优逼近法能够较好地满足滤波特性的要求,但计算复杂度较高。
时域设计方法主要通过对滤波器的冲激响应进行直接设计来实现。
常见的时域设计方法有零相位响应(Zero-Phase Response,ZPR)设计和线性相位设计。
零相位响应设计方法通过首先设计一个偶对称的冲激响应,并通过反转和平移来得到滤波器的冲激响应。
这样可以实现零相位的滤波效果。
零相位响应设计方法能够保持输入信号的相位信息,适用于对相位要求较高的应用,如音频信号处理。
线性相位设计方法主要通过对滤波器的延迟进行优化来实现。
线性相位设计方法能够使得滤波器的相位响应近似为线性函数,从而实现滤波器对不同频率的信号具有相同的延迟。
基于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滤波器。
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滤波器和IIR滤波器原理及实现FIR和IIR滤波器是数字信号处理中常用的滤波器类型,用于从输入信号中提取或抑制特定频率成分。
它们分别基于有限脉冲响应(FIR)和无限脉冲响应(IIR)的原理设计而成。
下面将分别介绍FIR和IIR滤波器的原理及实现方式。
一、FIR滤波器H(z)=b0+b1•z^(-1)+b2•z^(-2)+...+bM•z^(-M)其中,b0、b1、..、bM是FIR滤波器的系数,M为滤波器的阶数。
1.确定滤波器的设计要求,包括通带和阻带的边界频率、通带和阻带的衰减要求等。
2.根据设计要求,选择合适的滤波器设计方法,如FIR滤波器可以通过窗函数设计、频率采样法设计等。
3.根据设计方法计算得到滤波器的系数,即b0、b1、..、bM。
4.将计算得到的系数应用到差分方程中,实现滤波器。
5.将输入信号通过差分方程进行滤波处理,得到输出信号。
二、IIR滤波器IIR滤波器是一种具有无限长度的单位脉冲响应的滤波器,它具有反馈回路,可以实现对信号频率的持续平滑。
IIR滤波器的离散时间系统函数可以表示为:H(z)=[b0+b1•z^(-1)+b2•z^(-2)+...+bM•z^(-M)]/[1+a1•z^(-1)+a2•z^(-2)+...+aN•z^(-N)]其中,b0、b1、..、bM和a1、a2、..、aN分别为IIR滤波器的前向和反馈系数,M和N分别为前向和反馈滤波器的阶数。
实现IIR滤波器的步骤如下:1.确定滤波器的设计要求,选择合适的滤波器类型(低通、高通、带通、带阻等)。
2.根据设计要求,选择合适的设计方法(脉冲响应不变法、双线性变换法等)。
3.根据设计方法计算得到滤波器的系数,即b0、b1、..、bM和a1、a2、..、aN。
4.将计算得到的系数应用到差分方程中,实现IIR滤波器。
5.将输入信号通过差分方程进行滤波处理,得到输出信号。
IIR滤波器的优点是可以实现较窄的通带和截止频率,具有良好的频率响应特性,但由于反馈回路的存在,容易出现稳定性问题,设计和实现相对较为复杂。
FIR数字滤波器设计与软件实现实验报告222 FIR数字滤波器设计与软件实现实验报告222实验报告标题:FIR数字滤波器设计与软件实现实验目的:1.掌握FIR数字滤波器的设计原理;2.学会使用软件进行FIR数字滤波器设计;3.实现FIR数字滤波器的软件仿真。
实验材料与设备:1.计算机;2.FIR滤波器设计软件。
实验原理:FIR(Finite Impulse Response)数字滤波器是一种线性时不变滤波器,具有无穷冲击响应长度。
其传递函数表达式为:H(z)=b0+b1*z^(-1)+b2*z^(-2)+...+bM*z^(-M)其中,H(z)为滤波器的传递函数,z为z变换的复数变量,b0,b1,...,bM为滤波器的系数,M为滤波器的阶数。
FIR滤波器的设计包括理想滤波器的设计和窗函数法的设计两种方法。
本实验使用窗函数法进行FIR滤波器的设计。
窗函数法的步骤如下:1.确定滤波器的阶数M;2.设计理想低通滤波器的频率响应Hd(w);3.根据滤波器的截止频率选择合适的窗函数W(n);4.计算滤波器的单位脉冲响应h(n);5.调整滤波器的单位脉冲响应h(n)的幅度;6.得到滤波器的系数b0,b1,...,bM。
实验步骤:1.在计算机上安装并打开FIR滤波器设计软件;2.根据实验要求选择窗函数法进行FIR滤波器的设计;3.输入滤波器的阶数M和截止频率,选择合适的窗函数;4.运行软件进行滤波器设计,得到滤波器的系数;5.使用软件进行FIR滤波器的软件仿真。
实验结果:经过软件仿真,得到了FIR数字滤波器的单位脉冲响应和频率响应曲线,满足设计要求。
滤波器的阶数和截止频率对滤波器的响应曲线有一定影响。
通过调整滤波器阶数和截止频率,可以得到不同的滤波效果。
实验结论:本实验通过窗函数法进行FIR数字滤波器的设计,并通过软件进行了仿真。
实验结果表明,FIR数字滤波器具有良好的滤波效果,可以用于信号处理和通信系统中的滤波需求。
fir函数c语言实现FIR滤波器是一种广泛应用于数字信号处理领域的滤波器,它能够实现无限冲击响应(InfiniteImpulseResponse,简称FIR)滤波。
在许多实际应用中,FIR 滤波器被用来对信号进行平滑处理,去除噪声等。
下面将介绍如何使用C语言实现FIR滤波器。
一、FIR滤波器原理FIR滤波器是一种线性时不变系统,它通过一组滤波器系数将输入信号进行加权叠加,从而实现对信号的滤波处理。
FIR滤波器的输出信号与输入信号的关系可以用冲激响应表示,其冲激响应具有有限长度。
二、C语言实现FIR滤波器以下是一个简单的FIR滤波器的C语言实现,它采用递归方法实现滤波器的计算:```c#include<stdio.h>//FIR滤波器参数定义#defineFIR_LEN6//滤波器长度#defineTARGET_SNR10//目标信噪比#defineALPHA0.001//噪声系数//FIR滤波器系数定义floatfir_coeff[]={/*...*/};//滤波器系数数组//FIR滤波器函数实现floatfir_filter(floatinput){floatoutput=0;//滤波器输出floatx=input;//输入信号当前值floaty=x;//输入信号之前值floatz=x;//滤波器输出之前值inti;for(i=0;i<FIR_LEN;i++){y=y*ALPHA+fir_coeff[i]*z;//更新输入信号和滤波器输出output+=y;//更新滤波器输出z=x;//更新滤波器输出之前值}returnoutput/FIR_LEN;//归一化滤波器输出值}```这个代码实现了简单的FIR滤波器,其输入是一个浮点数类型的信号。
滤波器的长度和参数需要根据具体的应用场景进行调整。
此外,还需要准备一个FIR滤波器系数数组,并将其定义在代码中。
三、使用示例下面是一个使用示例,展示了如何使用上述代码对一组信号进行FIR滤波处理:```c#include<stdio.h>#include<stdlib.h>#include<time.h>intmain(){//生成一组随机信号作为输入数据floatsignals[]={/*...*/};//输入信号数组,包含多个样本数据intsignal_len=sizeof(signals)/sizeof(float);//信号长度srand(time(NULL));//设置随机数种子intidx=rand()%signal_len;//随机选择一个样本作为输入信号的起始点floatoutput[signal_len];//输出数组,用于存储滤波处理后的结果inti;for(i=idx;i<idx+signal_len;i++){//对每个样本进行滤波处理output[i-idx]=fir_filter(signals[i]);//使用fir_filter函数进行滤波处理,并将结果存储在output数组中}printf("Filteredsignals:\n");//输出滤波处理后的结果for(i=0;i<signal_len;i++){//输出每个样本的滤波处理结果printf("%f\n",output[i]);}return0;}```这个示例代码生成了一组随机信号作为输入数据,并使用上述实现的FIR滤波器对每个样本进行滤波处理。
FIR滤波器设计与实现一、FIR滤波器的设计原理y(n)=b0*x(n)+b1*x(n-1)+b2*x(n-2)+...+bM*x(n-M)其中,b0、b1、..、bM是滤波器的系数,M是滤波器的阶数。
在设计FIR滤波器时,需要确定滤波器的截止频率、滤波器类型(低通、高通、带通、带阻)以及滤波器的阶数。
通常情况下,滤波器的阶数越高,滤波器的性能越好,但计算复杂度也越高。
1.确定滤波器的截止频率和滤波器类型。
根据信号的频谱特性和滤波器的要求,确定滤波器的截止频率和滤波器类型。
2.确定滤波器的阶数。
根据滤波器的设计要求和计算资源的限制,确定滤波器的阶数。
3.计算滤波器的系数。
通过设计方法(如窗函数法、频率采样法、最优化法等),计算滤波器的系数。
4.实现滤波器。
根据计算得到的滤波器系数,使用差分方程或直接形式等方法实现FIR滤波器。
二、FIR滤波器的实现方法1.差分方程形式差分方程形式是FIR滤波器的一种常见实现方法,它基于差分方程对输入信号进行逐点计算。
根据滤波器的差分方程,可以使用循环结构对输入信号进行滤波。
2.直接形式直接形式是另一种常见的FIR滤波器实现方法,它基于滤波器的系数和输入信号的历史值对输出信号进行逐点计算。
直接形式的计算过程可表示为:y(n)=b0*x(n)+b1*x(n-1)+b2*x(n-2)+...+bM*x(n-M)其中,b0、b1、..、bM是滤波器的系数,x(n)、x(n-1)、..、x(n-M)是输入信号的历史值。
直接形式的优点是计算过程简单,缺点是计算量比较大,特别是当滤波器的阶数较高时。
除了差分方程形式和直接形式外,还有其他一些高级实现方法如离散余弦变换(DCT)和快速卷积等,它们能够进一步提高FIR滤波器的计算效率和性能。
总结:本文介绍了FIR滤波器的设计原理和实现方法。
FIR滤波器采用离散时间信号的卷积运算,通过确定截止频率、滤波器类型和阶数,计算滤波器系数,并使用差分方程或直接形式等方法实现滤波器。
FIR滤波器在DSP上的实现
1引言
近年来,随着数字信号处理(DSP)技术的发展,自由响应滤波器(FIR)已成为DSP系统的核心部分,广泛用于各种应用,如声学信号处理、通信器件、生物医学信号处理等。
本文首先介绍FIR滤波器的基本原理,之后介绍如何在DSP上实现FIR滤波器,主要介绍两种实现方法:延迟求和和移位加法(Shift-Add)。
最后,将对比分析两种实现方法的优劣,并分析哪些条件下使用移位加法。
2FIR滤波器的原理
输入的时域信号x[n]经过一系列不同阶数的延迟单元滤波器系数h[n]的乘法和求和运算,从而得到输出的时域信号y[n],即
y[n]=\sum_{k=0}^{k=N}h_{k}x[n-k]
其中,x[n]表示输入时域信号,h[n]表示滤波器系数,y[n]表示输出时域信号,N表示滤波器的阶数。
3在DSP上实现FIR滤波器。
赣南师院物理与电子信息学院课程设计报告姓名:陈如意邹丽蓉贺玲玲班级:09电信本学号:090802003090802071090802053时间:2012年4月25日设计题目基于DSP的实时FIR滤波器的实现设计要求1.熟悉AD50/McBSP的初始化设置及其使用方法,以及实时R滤波器的实现2.了解DSP/BIOS程序设计。
3.熟悉DSPLIB中FIR函数的调用及参数设置。
4.掌握FIR滤波器的原理与设计方法;5.学会在CCS平台编写C程序实现FIR滤波。
设计过程1.设计原理1.1 FIR滤波器设计原理在数字信号处理应用中往往需要设计线性相位的滤波器,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。
FIR滤波器不断地对输入样本x(n)延时后,再作乘法累加算法,将滤波结果y(n)输出,因此,FIR实际上是一种累加运算。
在数字滤波器中,FIR滤波器的最主要的特点是没有反馈回路,故不存在不稳定的为题,同时,可以在幅度特性随意设置的同时,保证精确的线性相位。
稳定和线性相位特性是FIR滤波器的突出优点。
另外,它还有以下特点:设计方式是线性的;硬件容易实现;滤波器过渡过程具有有限区间;相对IIR滤波器而言,阶次较高,其延迟也要比同样性能的IIR滤波器大得多。
FIR数字滤波器系统的传递函数为:nNnznbzXzYzH--=∑==1)()()()(通过反z变换,数字滤波器的差分方程为:)()(1knxhnyNkk-=∑-=由上式可以得出如下图所示的直接型结构,这种结构又可以成为卷积型结构。
将转置理论应用于图1.1可以得到转置直接型结构。
将式中的系统函数H(z)分解成若干一阶和二阶多项式的连乘积:211211)()()(MkkMkkzHzHzH===则由此式可以构成如图1.2所示的级联型结构。
其中1)1(1)1(1)(-+=zaazHkkk为一阶节,)2(2)2(1)2(2)(kkkkaaazH++=为二阶节。
每个一阶节、二阶节可用图1.2级联型结构实现。
当M1=M2时,即得到图1.3所示的具体结构。
这种结构的每一节都便于控制零点,在需要控制传输零点时可以采用。
但是它所需要的系数a比直接型的h(n)多。
在对滤波器计算时间没有特殊要求的时候可以采用这种形式。
若需要严格考虑滤波器的计算时间则需要同时考虑它们的优点及缺点来设计。
这在算法设计的时候要使用软件编辑环境来计算运行的时间问题。
通常FIR的计算时间都较长。
很多时候我们需要牺牲时间来获得想要得到的滤波区功能。
图1.1 FIR 滤波器直接型结构图图1.2 级联型结构图图1.3 级联型具体结构FIR 滤波器实质上就是一个分节的延迟线,把每一节的输出用滤波器系数进行加权累加,便得到滤波器的输出结果,它总是稳定并且可实现的。
在一些工程实际应用(如:图像处理、数据调制解调)中,往往对相位要求较高。
FIR 滤波器可以实现严格的线性相位,从而得到了广泛应用。
它的差分方程数学表达式为:)()(10k n x b n y N k k -=∑-=式中,N 是FIR 滤波器的抽头系数,x (n )表示在n 时刻输入的信号样值,h (n )表示滤波器的第n 级抽头系数。
横截型FIR 滤波器的结构如图1.4所示:图1.4 FIR 滤波器的横截型结构 2设计方案2.1 方案一: 窗函数法窗函数法也称为傅里叶级数法。
理想的数字滤波器频率特性)(jw e H 是无法实现的,FIR 的设计就是要寻找一个可以得到的频率特性∑-=-=10)()(N n jwn jwe n h e H 来逼近)(jw e H ,这相当于用一个可实现的单位脉冲响应h (n )去逼近一个理想单位脉冲响应)(n h d 。
)(n h d 可由理想频率特性)(jw e H 通过傅氏反变换得到,ωπππd e H n h jwd d )(21)(⎰-=。
一般来说,这样得到的理想单位脉冲响应序列)(n h d 是个无限长序列,因而是非因果的。
设有一个截止频率为c ω的理想线性相位低通,延时为τ,其频率特性是:πωωωωω≤≤≤≤⎩⎨⎧=c c j jwd ce e H 00)( 得到:[])()(sin )(τπτω--=n n n h c d ∞<<∞-n 这是一个以n=τ为中心偶对称的无限长非因果序列,要想用一个有限长的因果序列去逼近它,最简单的方法是截取从0到N-1的一段来表示它,及)(n h =)(n h d )10(-≤≤N n ;其他N :0)(=n h 。
同时,为了保证线性相位,还要满足偶对称)1(()(n N h n h --=。
这就像透过一个窗口观看到的一段)(n h d ,因此)(n h 就表示成)(n h d 和一个窗口函数的乘积,这样对)(n h 的求解就变为n d W n h n h *)()(=,这里的n W 就被称为窗函数,既然一个频域上的标准的矩形窗口对应于时域是一个无限长的序列,那么在时域上截取一段必然会造成频域的矩形窗口的失真。
相应的,截取出的信号也相应失真,从而需要改变原来窗口的形状来修正经过时域截取后的窗口失真。
2.2 方案二: 频率抽样法X(n)y(n)h(0)h(1)h(2)h(N-2)h(N-1)z -1z -1z -1窗函数法是从时域出发,用窗函数截取理想的)(n h d 得到)(n h ,以此有限长的)(n h 近似)(n h d ,这样得到的频率响应)(jw e H 逼近于理想的频率响应)(jw d e H 。
频率抽样法是从频率出发,将给定的理想频率响应)(jw d e H 加以等间隔抽样)()(2k H e H d Nk jw d ==πω然后以此)(k H d 作为FIR 滤波器的频率响应抽样值)(k H ,再根据DFT (离散傅氏变换)定义由频域这N 个抽样值来唯一定义一个有限长序列)(n h ,同样也可以算出FIR 滤波器的系统抽样函数)(z H 及频率响应)(jw e H ,可以推出频率响应)(jw e H 是频率抽样值)(k H 与线性相位因子2/)1(--N j e ω及如下内插函数),(k S ω的线性组合。
)2sin(2sin1),(NkNe Nk S Nnk j πωωω-=-所以,在各频率取样点上,实际滤波器的频率响应是严格地和所要求的滤波器的频率响应一致的,逼近误差为零,但在抽样点之间的频率响应是各取样点的内插函数的延伸叠加而成,有一定的逼近误差,误差大小取决于频率响应曲线的圆滑程度和抽样点的密度。
为了减少误差就要增加抽样点数目即增大采样频率,抽样点之间的理想频率特性变化越陡,则逼近误差越大,在理想频率特性的不连续点附近会产生肩峰和纹波。
频率抽样法的优点是可以在频域设计,适于利用最优化方法,而且这种方法特别适用于窄带选频滤波器,但频率抽样法的抽样频率只能是2π/N 的整数倍或2π/N 的整数倍加上π/N 。
不能保证截止频率c ω的准确取值,要实现精确的c ω就必须取N 足够大,相应的计算量也很大。
此外,它的阻带最大衰减一般,也只有30-50dB 左右,很难满足频域特性要求较高的场合。
2.3 方案三: Chebyshev 逼近法窗函数法和频率采样法设计的滤波器的频率特性都是在不同意义上对所给理想频率特性)(jw d e H 的逼近。
由数值逼近理论可知,对某个函数f (x )的逼近一般有以下三种方法:①插值法(Interpolating Way )②最小平方逼近法(Least Square Approaching Way ) ③一致逼近法(Consistent Approaching Way )切比雪夫最佳一致逼近的基本思想是,对于给定区间[a,b]上的连续函数f(x),在所有n 次多项式的集合n ϕ中,寻找一个多项式p(x),使它在[a,b]上对f(x)的偏差和其它一切属于n ϕ的多项式p(x)对f(x)的偏差相比是最小的,即:))}()(min{max()()(max x f x p x f x p -=-切比雪夫逼近理论,解决了p (x )的存在性、唯一性和如何构造等问题。
但切比雪夫逼近法的效率初始极值频率点的估计,且通带和阻带内波纹数较多,这是Chebyshev 方法的两个主要缺点。
3设计步骤3.1 FIR 窗函数法的基本步骤:(1)把)(jw d e H 经傅里叶变换,得)(n h d ; (2)对)(n h d 自然截短到所需的长度;(3)将截短后的)(n h d 右移M 个采样间隔,得)(n h ;(4)将)(n h 乘以合适的窗函数得到所要滤波器的冲击响应,窗函数以n=M 对称。
利用所求得的单位抽样响应,即可用硬件构成滤波器的转移函数 H (z ),也可利用)(n h 在计算机上用软件实现滤波。
3.2 典型窗函数介绍数据窗在FIR 滤波器的窗函数设计中起着重要的作用,它的性能的好坏直接影响着滤波器的过渡带宽和衰减的大小。
对窗函数总的要求,是希望他的频谱中的主瓣尽量窄,旁瓣幅度尽量小,尤其是第一旁瓣。
此外,窗函数还应该满足下列要求以便可以定量地比较各函数的性能。
W (n )应是非负的实偶函数,为了使滤波器获得较大的主旁瓣能量化,从对称中心开始w (n )应是非递增的;为了保证滤波器的通带增益为1,应有:1)(21)0(==⎰-ωππωπωd e W j为了保证滤波器的相位特性不因加窗而改变,一般要求)(jw e W 是恒正的;这里给出如下三个频域指标作为窗函数性能的性能参数:(1)3dB 带宽B ,它是主瓣归一化幅度))1()(log 20(W e W j ω 下降到-3dB 时的带宽。
当数据长度为N 时,最大可能的频率分辨率是Nπω2=∆,则B 的单位可以是ω∆;(2)最大旁瓣峰值A (dB )。
A 越小,由旁瓣引起的振荡幅度越小; (3)旁瓣峰值渐进衰减速度D (dB/oct );3.2.1 矩形窗(Rectangle Window )由于矩形窗时讲理想的通带所对应的时域部分,无限长截断到有限长。
1)(=n ω,n=0,1,……N-1它的波形及其幅频响应曲线如3.1示:51015200.20.40.60.81SamplesA m p l i t u d eTime domain0.20.40.60.8-50-40-30-20-100102030Normalized Frequency (⨯π rad/sample)M a g n i t u d e (d B )Frequency domain图3.1 矩形窗波形及其幅频响应曲线(N=21)它的窗口形式n n RN W *1=,这样在转换成频域是,理想的矩形通带会产生畸变,畸变情况如下图3.3所示图3.3 经矩形窗截短后的畸变由上图可见,原本十分理想的矩形窗的传递函数现在变成了目前的形状。