FIR数字滤波器的MATLAB实现

合集下载

matlabfir滤波器设计

matlabfir滤波器设计

matlabfir滤波器设计在数字信号处理中,滤波器是一种常用的工具,用于处理信号的频率特性。

其中,FIR(有限脉冲响应)滤波器是一种常见的滤波器类型之一。

MATLAB提供了方便的工具和函数来设计和实现FIR滤波器。

在本文中,我们将介绍MATLAB中如何使用fir1函数来设计FIR滤波器。

要使用fir1函数设计FIR滤波器,需要指定滤波器的阶数和截止频率。

阶数决定了滤波器的复杂度,而截止频率则决定了滤波器的频率响应特性。

通过调整这两个参数,可以设计出不同类型的滤波器,如低通滤波器、高通滤波器、带通滤波器和带阻滤波器。

接下来,我们可以使用fir1函数来设计一个简单的低通滤波器。

例如,我们可以指定一个4阶低通滤波器,截止频率为0.5(归一化频率,取值范围为0到1)。

通过调用fir1函数并传入相应的参数,即可得到设计好的滤波器系数。

设计好滤波器系数后,我们可以将其应用于信号处理中。

例如,我们可以使用filter函数来对信号进行滤波。

将设计好的滤波器系数和待处理的信号作为输入参数传入filter函数,即可得到滤波后的信号。

这样,我们就可以实现对信号的滤波处理。

除了fir1函数外,MATLAB还提供了其他用于滤波器设计的函数,如firpm、fircls、firls等。

这些函数可以实现更复杂的滤波器设计,满足不同的需求。

通过选择合适的函数和参数,可以设计出性能优越的滤波器,用于各种信号处理应用中。

MATLAB提供了强大的工具和函数来设计和实现各种类型的滤波器。

通过合理选择滤波器的阶数和截止频率,以及使用适当的函数来设计滤波器系数,可以实现对信号的有效滤波处理。

希望本文能够帮助读者了解MATLAB中fir1函数的使用方法,进一步掌握滤波器设计的技巧,提高信号处理的效率和质量。

matlabfir滤波器设计

matlabfir滤波器设计

matlabfir滤波器设计MATLAB是一个高级编程语言和交互式环境,被广泛应用于各种科学和工程问题的数值分析、数据可视化和编程开发等领域。

FIR滤波器是数字信号处理中经常使用的一种滤波器,它是基于有限长冲激响应的滤波器。

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

一、FIR滤波器设计基础1.1 什么是FIR滤波器FIR滤波器是有限长冲激响应滤波器,由于其具有线性相位特性和可控阶数等优点,在数字信号处理中得到了广泛的应用。

一般来说,FIR滤波器的频率响应特性由滤波器的系数函数确定。

FIR滤波器的设计一般采用窗函数法、最小二乘法、频率抽取法等方法。

窗函数法是最常见的一种方法,大部分情况下选择的是矩形窗、汉宁窗、布莱克曼窗等。

1.3 fir1函数介绍fir1函数是MATLAB中用于FIR滤波器设计的函数,用法为:h = fir1(N, Wn, type)N为滤波器的阶数,Wn是用于指定滤波器截止频率的参数,type指定滤波器类型,可以是低通、高通、带通、带阻等。

二、使用fir1函数设计FIR滤波器2.1 设计要求采样率为300Hz;滤波器阶数为50;截止频率为50Hz。

2.2 实现步骤(1)计算规范化截止频率规范化截止频率是指在数字滤波器设计中使用的无单位量,通常范围为0到1。

在本例中,我们需要将50Hz的截止频率转化为规范化截止频率。

Wn = 2*50/300 = 1/3根据计算出的规范化截止频率和滤波器阶数,我们可以使用fir1函数来进行滤波器设计。

此处滤波器的阶数为50,规范化截止频率为1/3,类型为低通。

(3)绘制滤波器的幅频响应图为了验证设计的低通FIR滤波器是否符合要求,我们需要绘制其幅频响应图。

freqz(h,1,1024,300)经过上述步骤后,我们就得到了一张低通FIR滤波器的幅频响应图,如下图所示:图1.低通FIR滤波器的幅频响应图三、总结通过上述例子,我们可以看出在MATLAB中与fir1函数可以非常方便的进行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滤波器系数。

基于MATLAB的IIR和FIR滤波器的设计与实现要点

基于MATLAB的IIR和FIR滤波器的设计与实现要点

基于MATLAB的IIR和FIR滤波器的设计与实现要点IIR和FIR滤波器是数字信号处理中常用的滤波器设计方法,它们分别基于无限脉冲响应(IIR)和有限脉冲响应(FIR)的理论基础。

本文将对基于MATLAB的IIR和FIR滤波器的设计与实现要点进行详细的介绍。

1.滤波器设计方法IIR滤波器设计方法主要有两种:基于模拟滤波器的方法和基于离散系统的方法。

前者将模拟滤波器的传递函数转化为离散滤波器的传递函数,常用方法有:脉冲响应不变法、双线性变换法等,MATLAB中提供了相关函数实现这些方法。

后者直接根据滤波器的要求设计离散系统的传递函数,常用方法有:Butterworth、Chebyshev等,MATLAB中也提供了相应的函数实现这些方法。

2.滤波器参数的选择选择合适的滤波器参数是IIR滤波器设计中的关键步骤。

根据滤波器的型号和设定的滤波器规格,主要需要选择的参数包括:滤波器阶数、截止频率、通带和阻带的衰减等。

一般情况下,滤波器阶数越高,滤波器的性能越好,但计算量也会增加,所以需要进行权衡。

3.滤波器实现方法基于MATLAB的IIR滤波器可以通过直接的形式或级联形式实现。

直接形式直接使用传递函数的表达式计算输出样本;级联形式则将传递函数分解为多个较小的子滤波器,逐级计算输出样本,并将各级输出进行累加。

选择哪种形式取决于具体的应用需要和滤波器的阶数。

4.滤波器性能评估设计好IIR滤波器后,需要对其性能进行评估,判断滤波器是否满足要求。

主要评估指标包括:幅频响应、相频响应、群延迟等。

MATLAB提供了多种绘制频域和时域响应曲线的函数,可以用来评估IIR滤波器的性能。

1.滤波器设计方法FIR滤波器设计主要有两种方法:窗函数法和最优化法。

窗函数法是最简单的设计方法,它通过对理想滤波器的频率响应进行窗函数加权来获得滤波器的时域响应,常用的窗函数有:矩形窗、汉宁窗、布莱克曼窗等。

最优化法则通过优化其中一种准则函数,如最小二乘法、Chebyshev等,得到最优的FIR滤波器。

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

基于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的FIR和IIR数字滤波器的设计

基于MATLAB的FIR和IIR数字滤波器的设计

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

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数字滤波器设计实验_完整版

FIR数字滤波器设计实验_完整版

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数字滤波器来滤除信号中的特定频率成分。

这对于许多信号处理应用都是非常重要的,如音频处理、图像处理和通信系统等。

FIR数字滤波器的模型化实现

FIR数字滤波器的模型化实现

FIR数字滤波器的模型化实现一、引言数字滤波器是数字信号处理中的重要部分,它通过对数字信号进行滤波处理,可以去除噪声、提高信号质量和提取有用的信息。

FIR数字滤波器是其中的一种,它通过对输入信号的加权求和来实现滤波效果,具有稳定性和易于设计的优点。

本文将介绍FIR数字滤波器的模型化实现方法,包括滤波器的基本原理、设计步骤和模拟实现过程。

二、FIR数字滤波器的基本原理FIR数字滤波器是一种线性时不变系统,其基本原理是通过对输入信号的每个采样点进行加权求和,得到输出信号。

其数学模型可以表示为:y(n) = b0*x(n) + b1*x(n-1) + b2*x(n-2) + … + bM*x(n-M)其中y(n)为输出信号,x(n)为输入信号,b0、b1、b2…bM为滤波器的系数,M为滤波器的阶数。

滤波器的系数决定了滤波器的频率特性,可以根据需要进行设计和调整,以实现不同的滤波效果。

三、FIR数字滤波器的设计步骤1. 确定滤波器的需求在进行FIR数字滤波器的设计之前,首先需要明确滤波器的设计需求,包括滤波器的通带和阻带频率、通带和阻带的衰减要求、滤波器的阶数等。

这些需求将指导后续的滤波器设计。

2. 确定滤波器的类型根据滤波器的需求,可以确定滤波器的类型,如低通滤波器、高通滤波器、带通滤波器或带阻滤波器。

不同的类型对应着不同的频率特性,需要根据具体情况进行选择。

3. 设计滤波器的系数根据滤波器的类型和需求,可以采用不同的设计方法来确定滤波器的系数。

常见的设计方法包括窗函数法、频率采样法、最小均方误差法等。

在确定系数后,可以得到一个完整的FIR数字滤波器。

四、FIR数字滤波器的模拟实现设计好FIR数字滤波器后,可以进行模拟实现,以验证其滤波效果和性能。

通常可以采用Matlab、Python等工具进行模拟实现。

下面以Matlab为例,简要介绍FIR数字滤波器的模拟实现过程。

1. 定义滤波器系数在Matlab中,可以通过给定的系数来定义一个FIR数字滤波器。

fir带阻滤波器matlab代码

fir带阻滤波器matlab代码

《fir带阻滤波器MATLAB代码实现及应用》一、引言在数字信号处理领域,滤波器是一种常见的工具,用于处理数字信号的频率特性。

其中,fir带阻滤波器是一种常用的滤波器类型,它可以在信号频谱中选择性地抑制某些频率分量,从而实现信号的滤波处理。

本文将从fir带阻滤波器的原理和设计入手,结合MATLAB代码实现,探讨fir带障滤波器的应用以及个人的理解。

二、fir带阻滤波器原理与设计1. fir带阻滤波器的原理fir带阻滤波器是一种线性相位滤波器,它具有在给定频率范围内拒绝信号分量的能力。

其原理是利用窗函数的方法对滤波器的频率响应进行设计,从而实现对特定频率范围内信号的抑制。

2. fir带阻滤波器的设计方法fir带阻滤波器的设计方法多种多样,常见的包括频率采样法、窗函数法、优化法等。

在设计过程中,需要考虑滤波器的通带、阻带、过渡带等参数,并选择合适的设计方法和滤波器系数,以满足滤波器的设计要求。

三、MATLAB代码实现下面是一段MATLAB代码,实现了一个简单的fir带阻滤波器:```matlab% 设计fir带阻滤波器fs = 1000; % 采样频率fpass = [100 200]; % 通带频率范围fstop = [150 250]; % 阻带频率范围dpass = 0.01; % 通带最大衰减dstop = 0.01; % 阻带最小衰减% 根据要求设计fir带阻滤波器h = fir1(100, fstop/(fs/2), 'stop', kaiser(101, 5));% 使用fir带阻滤波器进行信号滤波t = 0:1/fs:1-1/fs; % 生成时间序列x = sin(2*pi*100*t) + sin(2*pi*200*t); % 生成测试信号y = filter(h, 1, x); % 对测试信号进行滤波```以上代码首先设定了滤波器的参数,然后利用MATLAB的fir1函数设计了一个带阻滤波器,并对一个测试信号进行了滤波处理。

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)定义滤波器的功率频谱,根据滤波器的类型,定义滤波器的功率频谱,包括最大值,超调因数以及滤波器的边带幅度。

matlabfir滤波器设计

matlabfir滤波器设计

matlabfir滤波器设计在数字信号处理中,滤波器是一种常用的工具,用于对信号进行处理和分析。

其中,fir滤波器是一种常见的数字滤波器,具有线性相位和有限冲激响应的特点。

在Matlab中,fir滤波器设计是一项重要的任务,可以通过Matlab提供的函数和工具来实现。

fir滤波器是一种使用有限长脉冲响应(finite impulse response, FIR)的数字滤波器。

与IIR滤波器相比,fir滤波器具有较好的稳定性和线性相位特性,因此在许多应用中得到广泛应用。

fir滤波器的设计通常包括确定滤波器的系数,即滤波器的频率响应。

在Matlab中,可以使用fir1、firls、firpm等函数来设计fir滤波器。

fir1函数是Matlab中用于设计一阶和二阶fir滤波器的函数,可以指定滤波器的类型(低通、高通、带通、带阻)、截止频率和滤波器的阶数。

通过调整这些参数,可以设计出符合要求的fir滤波器。

另外,firls函数可以用于最小二乘法设计fir滤波器,firpm函数可以用于最小最大法设计fir滤波器。

fir滤波器设计的关键是确定滤波器的系数,即滤波器的权重。

在Matlab中,可以通过fir1、firls、firpm等函数来计算出滤波器的系数,从而实现fir滤波器的设计。

设计fir滤波器时,需要考虑滤波器的类型、截止频率、滤波器的阶数等因素,以满足具体的信号处理需求。

除了fir1、firls、firpm等函数外,Matlab还提供了firgr、fdatool 等工具,用于可视化fir滤波器的频率响应和设计滤波器。

通过这些工具,可以直观地查看滤波器的频率响应曲线、幅度响应和相位响应,帮助用户更好地理解和调整滤波器的设计参数。

fir滤波器设计是数字信号处理中的重要任务,Matlab提供了丰富的函数和工具,可以帮助用户设计出符合要求的fir滤波器。

通过合理选择滤波器的类型、截止频率和阶数,可以实现对信号的有效滤波和处理。

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

FIR数字滤波器设计及MATLAB实现

FIR数字滤波器设计及MATLAB实现
s s P A Tc 系统实 践 Y R c .E
l 2 9
FR 字 滤 波 器 设 计 及 MA L 实现 I数 T AB
冯 冠超 ( 哈尔滨工业大学 ( 威海 ) 山东威海
24 0) 6 2 9
摘 要 :主要 研 究在 MA IBt境 T FR ̄ 字滤 波 器的 典 型设计 方 法 ,应 用MA L B 号 处理 工 具箱及 其 扩展 函数 ,使 得如 TA  ̄ . IA c TA信 何在 数 字信 号 处理过 程 中较 复杂 的数 字 滤波 器设计 问题 得 以解 决 。
gr i d
1 引 言 .
数字 信 号 处理 是在 2 世 纪6 年 代 ,用 数字 的数 值 计 算 方法 0 O 对 信号 进 行 处 理 ,以达 到 提 取 有 用信 息 便 于应 用 的 目的 , 目前 数 字信号 处理 技术 已广 泛 应用 于 多个领 域 数 字 滤 波器 根 据 其 单 位 冲激 响应 函数 的 时域 特 性 可 分 为两 类 :无 限冲激 响 应 l 滤波 器和 有 限 冲激 响 应 FR 波器 。 F R l R I滤 I 滤 波器 最 重要 的 优点 就是 由于 不存 在 系统 极点 ,FR 波器 是绝 对 I滤 稳 定 的系 统 。MA L B为数 字 滤 波 的研 究 提供 了一 个直 观 、高 TA 效 、便 捷 的 利器 。 它 以矩 阵 运算 为基 础 ,把 计 算 、 可视 化 、程 序 设计融 合到 一 个交互 式 的工 作环 境 中。
参 考文 献 [13 14 晓晨, 李涛, 刘路 . MATL B3 箱应 用指 南[ .电子工业 出 A - M】
版 社 .0 0 20 .
3 窗函数 设 计的基 本 思想 .
窗 函数 法 设 计 的基 本 思 想 是 把给 定 的频 率 响应 通 过 离 散傅 里 叶逆 变换 ,求 得 脉 冲 响应 ,然 后利 用 加 窗 函 数对 它进 行 截 断 和 平 滑 ,以 实现 一 个物理 可 实 现且 具 有线 性相 位 的 FR I 滤波 器 的 设 计 目的。 其 核 心 是从 给 定 的 频 率特 性 ,通 过 加窗 确 定 有 限 长 单 位脉 冲 Ⅱ 应序  ̄ h n ,过 程 如下 : 向 J ()

matlab中fir数字滤波器常用函数

matlab中fir数字滤波器常用函数

一、 fir数字滤波器概述fir数字滤波器是一种常用的数字信号处理工具,用于滤除特定频率成分或增强特定频率成分。

在信号处理领域,fir数字滤波器具有重要的应用价值,能够有效地对信号进行去噪、平滑或频率变换等处理。

在matlab中,有许多常用的fir数字滤波器函数,下面将对这些常用函数进行介绍。

二、 fir1函数fir1函数是matlab中用于设计一维fir滤波器的函数,它可以根据指定的滤波器类型、滤波器阶数和截止频率来生成fir数字滤波器。

该函数的调用格式为:h = fir1(n, wn, type)其中,n表示滤波器的阶数,wn为一个标量或长度为2的向量,用于指定截止频率,type为滤波器类型,可以是‘high’、‘low’、‘stop’或‘bandpass’。

三、 fir2函数fir2函数是matlab中用于设计二维fir滤波器的函数,它可以根据指定的滤波器类型、滤波器尺寸和频率响应来生成fir数字滤波器。

该函数的调用格式为:h = fir2(n, f, m, w)其中,n表示滤波器的尺寸,f表示频率响应,m表示频率响应对应的标量,w为设定的窗函数。

四、 fircls函数fircls函数是matlab中用于设计带通fir滤波器的函数,它可以根据指定的滤波器类型、通带和阻带的频率范围来生成fir数字滤波器。

该函数的调用格式为:h = fircls(n, f, a, dev)其中,n表示滤波器的阶数,f表示通带和阻带的频率范围,a表示通带和阻带的幅度响应值,dev表示通带和阻带的允许偏差。

五、 firpm函数firpm函数是matlab中用于设计带通fir滤波器的函数,它可以根据指定的滤波器类型、通带和阻带的频率范围以及频率响应来生成fir数字滤波器。

该函数的调用格式为:h = firpm(n, f, a, w)其中,n表示滤波器的阶数,f表示通带和阻带的频率范围,a表示通带和阻带的幅度响应值,w为设定的窗函数。

用MATLAB设计数字FIR低通滤波器(哈明窗)

用MATLAB设计数字FIR低通滤波器(哈明窗)

用MATLAB设计数字FIR低通滤波器(哈明窗)设计数字FIR低通滤波器,技术指标如下:Wp=0.2pi.rp=0.25db;Ws=0.3pi,as=50db.求解,如下图:程序:wp=0.2*pi;ws=0.3*pi;trwidth=ws-wp;M=ceil(6.6*pi/trwidth)+1;%朝正无穷方向取整n=[0:1:M-1];wc=(ws+wp)/2%求的截止频率(弧度)hd=ideal_lp(wc,M) %调用计算理想低通滤波器的单位取样响应wham=(hamming(M))';%哈明窗函数h=hd.*wham;[H,w]=freqz(h,1,1000,'whole'); %求Z变换频率响应函数H=(H(1:1:501))';w=(w(1:1:501))'mag=abs(H);db=20*log10((mag+eps)/max(mag));pha=angle(H);grd=grpdelay(h,1,w);deltaw=2*pi/1000;Rp=-(min(db(1:1:wp/deltaw+1)))As=-round(max(db(ws/deltaw+1:1:501)))subplot(1,1,1)subplot(2,2,1),stem(n,hd);title('理想脉冲响应')axis([0 M-1 -0.1 0.3]);xlabel('N');ylabel('hd(n)');subplot(2,2,2),stem(n,wham);title('Hamming窗')axis([0 M-1 -0 1.1]);xlabel('N');ylabel('w(n)');subplot(2,2,3),stem(n,h);title('实际脉冲响应')axis([0 M-1 -0.1 0.3]);xlabel('N');ylabel('h(n)');subplot(2,2,4),plot(w/pi,db);title('相对标尺的幅度响应');grid on;axis([0 1 -100 10]);xlabel('frequency in pi units');ylabel('decibels');set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1])%设置或修改LTI对象的属性值set(gca,'XTickMode','manual','XTick',[-50,0])set(gca,'XTickLabelMode','manual','XTickLabels',['50';'0'])子程序:function hd=ideal_lp(wc,N);a=(N-1)/2;n=[0:1:(N-1)];m=n-a+eps;hd=sin(wc*m)./(pi*m);。

基于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)。
=N+1; end Nw=N;
n=[0:1:Nw-1]; wc1=(ws1+wp1)/2; wc2=(ws2+wp2)/2;
alpha=(Nw-1)/2; m=n-alpha+0.00001; %如果不加 0.00001,当 n= alpha 时,m 为 0,下式分母为 0,不能执行 hd=sin(wc2*m)./(pi*m)- sin(wc1*m)./(pi*m); %理想滤波器的冲激响应
作为 FIR 滤波器的系数。 常用的窗函数有矩形窗、海明窗和布莱克曼窗等。
7.2.2
用窗函数法设计 FIR 滤波器
Matlab 设计 FIR 滤波器有多种方法和对应的函数,见表 7-1。 表 7-1 matlab 设计 FIR 滤波器的方法和函数 方法 窗方法 多带方法 最小二乘法 任意响应法 余弦法 描述 使用窗函数和逆傅立叶变换实现 包含子带频率域 使用最小二乘法将整个频率域上的错误 几率压缩到最小 使用任意响应, 包括非线性相位以及复滤 波器 使用三角函数的低通响应 函数 fir1,fir2,kaiserord 等 firls,remez 等 fircls ,fircls1 等 cremez 等 firrcos 等
第7章
FIR 数字滤波器的 Matlab 实现
7.1 实验目的

学习用窗函数法设计 FIR 数字滤波器的原理及其设计步骤; 学习编写数字滤波器的设计程序的方法,并能进行正确编程; 根据给定的滤波器指标,给出设计步骤。
7.2 实验原理及实例分析 7.2.1 FIR 低通数字滤波器的设计原理
如果系统的冲激响应 hd ( n) 为已知,则系统的输入/输出关系为:
wp=0.2*pi; ws=0.3*pi; tr_width=ws-wp; %通带宽度 N=ceil(6.6*pi/tr_width)+1; %滤波器长度 if rem(N,2)==0 N=N+1; end Nw=N; %滤波器长度为奇数 n=[0:1:Nw-1]; wc=(ws+wp)/2; %截止频率 alpha=(Nw-1)/2; m=n-alpha+0.00001; %如果不加 0.00001,当 n= alpha 时,m 为 0,下式分母为 0,不能执行 hd=sin(wc*m)./(pi*m); %理想滤波器的冲激响应
用于产生窗函数的 matlab 文件有如下 8 个: bartlett.m(巴特利特窗) blackman.m(布莱克曼窗) rectangle.m(矩形窗) hamming.m(汉明窗) hanning.m(汉宁窗) triang.m(三角窗) chebwin.m(切比雪夫窗) Kaiser.m(凯泽窗) 【实例 7-1 】 设计一个 34 阶的高通滤波器,截止频率为 0.48 ,使用具有 30dB 波纹的 chebyshev 窗。 解:源程序如下: b=fir1(34,0.48,'high',chebwin(35,30)); freqz(b,1,512) 其响应波形如图 7-1 所示。
% 生成 blackman 窗 w_bla=(blackman(M))'; h=hd.*w_bla; % 频域图像的绘制 freqz(h,[1]) figure(2); subplot(2,2,1),stem(n,hd);title('idael impulse response') axis([0 Nw-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)') subplot(2,2,2),stem(n,w_bla);title('blackman window') axis([0 Nw-1 0 1.1]);xlabel('n');ylabel('w(n)') subplot(2,2,3),stem(n,h);title('actual impulse response') axis([0 Nw-1 -0.4 0.5]);xlabel('n');ylabel('h(n)') 其响应波形如图 7-4 所示。
% 生成 hamming 窗
w_ham=(hamming(Nw))';
% 频域图像的绘制 h=hd.*w_ham; % 滤波器实际冲激响应
freqz (h,[1]) figure(2);
subplot(2,2,1),stem(n,hd);title('理想脉冲响应') axis([0 Nw-1 -0.3 0.3]);xlabel('n');ylabel('hd(n)') subplot(2,2,2),stem(n,w_ham);title('hamming 窗') axis([0 Nw-1 -0.3 1.2]);xlabel('n');ylabel('w(n)') subplot(2,2,3),stem(n,h);title('实际脉冲响应') axis([0 Nw-1 -0.3 0.3]);xlabel('n');ylabel('h(n)')



H d (e jw )e jnw dw
jw
以 hd ( n) 为冲激响应的数字滤波器将具有频域响 H d (e 但是将 hd ( n) 作为滤波器脉冲响应有两个问题:
)。
(1) 它是无限长的,与 FIP 滤波器脉冲响应有限长这一前提不一致 (2) 它是非因果的, hd ( n) 0, n 0 对此,要采取以下的措施, (1) 将 hd ( n) 截短 (2)将其往右平移,
图 7-2 带通 FIR 滤波器 【实例 7-3】 设计具有下面指标的低通 FIR 滤波器
w p 0.2 , R p 0.25dB, ws 0.3 , AS 50dB
由于其最小阻带衰减为 50dB,因此可以选择 hamming 窗来实现这个滤波器,因为它具有较 小的过渡带。 解:MATLAB 源程序为 %数字滤波器指标
jw
) ,分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度
N,重复上述设计过程,以得到满意的结果 FIR1.m 调用格式: a) b=fir1(N,wn) b) b=fir1(N,wn,’hign’) N 为滤波器的阶次,wn 是通带截止频率,其值在 0~1 之间,1 对应抽样频率的一半; b 是设计好的滤波器系数 h(n)。 对于格式 a),若 wn 是标量,则用来设计低通滤波器,若 wn 是 1×L 的向量,则用来 设计带通(带阻)滤波器。其格式为: b=fir1(N,wn,’DC-1’)或 b=fir1(N,wn,’DC-0’),其中,前者保证第一个带为通带,后者保证 第一个带为阻带。 b)用来设计高通滤波器。
窗函数方法不仅在数字滤波器的设计中占有重要的地位,同时可以用于功率谱的估计, 从根本上讲, 使用窗函数的目的就是消除由无限序列的截短而引起的 Gibbs 现象所带来的影 响。 窗函数设计线性相位 FIR 滤波器步骤如下: (1) 确定数字滤波器的性能要求,临界频率 {wk } ,滤波器单位脉冲响应长度 N (2) 根据性能要求,合理选择单位脉冲响应 h(n)的奇偶对称性,从而确定理想频率 响应 H d (e
jw
) 的幅频特性和相频特性
jw
(3) 求理想单位脉冲响应 hd ( n) , 在实际计算中, 可对 H d (e 的 hM ( n) ,用 hM ( n) 代替 hd ( n)
并对其求 IDFT ) 采样,
(4) 选择适当的窗函数 w(n) ,根据 h( n) hd ( n) W N ( n) 求所需设计的 FIR 滤波 器单位脉冲响应 (5) 求 H d (e
图 7-4 blackman 窗函数设计 FIR 滤波器 7.3 编程练习 1. 设计一个 48 阶 FIR 带阻滤波器,通带频率 0 w 0.35 , 0.65 w 。 2.用窗函数设计一个线性相位 FIR 高通滤波器, 并满足性能指标: 通带边界频率 wp 0.66 , 阻带边界频率 ws 0.5 ,阻带衰减不小于 40db。 提示:参考例 7-3,4;首先根据阻带衰减,选择合适的窗函数,见课本 P342,表 7-3。再 根据 P345,式 7-74 写出理想滤波器的冲激响应 hd 。
图 7-1 带通 FIR 滤波器 【实例 7-2】设计一个 24 阶 FIR 带通滤波器,通带频率 0.35 w 0.65 。 解:源程序如下: wn=[0.35 0.65]; N=24; b=fir1(2*N,wn,'DC-0');% DC-0 表示第一个带为阻带,这样设计出来的滤波器为带通滤波器。 freqz(b,1,512)
y ( n ) x ( n ) hd ( n )
对于低通滤波器, 只要设计出低通滤波器的冲激响应函数, 就可以由上式得到系统的输出了。 假设所希望的数字滤波器的频率响应为 H d (e 它与 H d (e
jw jw
) ,它是频域的周期函数,周期为 2 ,那么
) 相对应的傅立叶系数为 hd ( n ) 1 2
jw
由此得到 h2 ( n) 的实际频域响应 H d (e
) h2 (n)e jnw ,与理想频域响应 H d (e jw ) 相近,
n 0
N 1
但不完全一致。理论证明上述现象是对 hd ( n) 进行简单截短处理的必然结果,一般称为吉布 斯现象, 为尽可能的减少吉布斯现象, 应对 hd ( n) 进行加窗截取, 即以 h( n) hd ( n) W N ( n)
其响应波形如图 7-2 所示。
图 7-3 hamming 窗函数设计 FIR 滤波器
【实例 7-4】设带通滤波器的指标为
相关文档
最新文档