? FIR数字滤波器的设计与实现-空天电子信息国家级(虚拟仿真)实验教学中 365bet官网体育开户网址_365bet官网备用网址 888_365bet官网足球比分直播网

FIR数字滤波器的设计与实现

实验一 ? FIR数字滤波器的设计与实现

滤波器设计与实现是数字信号处理中最基本的内容之一。我们知道滤波器分IIR滤波器(无限冲激响应滤波器)和FIR滤波器(有限冲激响应滤波器)两种。

FIR滤波器的设计方法以直接逼近所需离散设计系统的频率响应为基础。FIR滤波器可以很容易地获得线性相移特性,不存在不稳定的问题,是实际系统中广为采用的一种数字滤波器。FIR365bet官网足球比分直播网365bet官网备用网址 888365bet官网体育开户网址滤波器的设计,通常有窗函数设计法、频率抽样设计法和最佳逼近设计法。窗函数设计法比较简单,它的频率特性是理想滤波器频谱与窗的频谱的卷积,因而,其频率特性取决于窗的类型和长度。频率抽样设计法比较直观,但由于频域的采样会造成时域的混叠,从而滤波器叠性能不可能很高,为提高滤波器的性能,可以在过渡带加上01之间的过渡点。本实验主要采用窗函数设计法。

FIR滤波器在Matlab中的实现包括时域卷积和filter滤波等方法,通过本实验可以对两种方法的实现过程和实现效果进行分析比较。

相关Matlab函数说明

1、 ?有限冲激响应数字滤波器设计函数fir1fir2

1.1fir1来设计加窗的有限冲激响应数字滤波器?

? ? ? ? ? ? ? ?(1)调用方法:b = fir1(N,Wn)

? ? ? ? ? ? ? ? ?该函数是对于抽样频率为2Hz的情况。用于设计常规的低通、高通、带通和带阻线性相位有限冲激响应滤波器。?

输入参数:N --- 滤波器的阶次

? ? ? ? ? ? ? ? ? ? Wn--- 对于低通设计,Wn指的是归一化截止频率,它是在01之间的一个数。对于带通设计,Wn是包含指定通带边界的一个双元素向量[Wn1,Wn2],其中0<><>

输出参数:b --- 的升幂排列的N阶低通或带通滤波器的冲激响应系数。

? ? ? ? ? ? ? ?(2)调用方法:b = fir1(N,Wn,’high’)

? ? ? ? ? 输入参数:N--- 为一个偶数,用于设计高通滤波器。?

? ? ? ? ? ? ? ?(3)调用方法:b = fir1(N,Wn,’stop’)

? ? ? ? ? 输入参数:Wn--- 一个双元素向量,用于设计带阻有限冲激响应滤波器。若没有指定,用海明窗作为默认值。?

? ? ? ? ? ? ? ?(4)调用方法:b = fir1(N,Wn,taper)

? ? ? ? ? 输入参数:taper--- 给定长度为N+1的窗系数。然而,窗系数必须事先用一个适当的MATLAB函数来产生,如blackmanhamminghanningchebwinkaiser。用到的命令为taper= blackman(N) ? ?taper = hamming(N) ? taper =hanning(N) ? ?taper = chebwin(N) ? taper =kaiser(N,beta)?

1.2fir2设计带有任意形状幅度响应的线性相位有限冲激响应滤波器?

? ? ? ? ? ? ? ?(1)调用方法:b = fir2(N,fpts,mval)

输入参数:fpts --- 给定的频率点向量。它在01范围内以递增的顺序排列,其中第一个频率点是0,而最后的频率点是1。和前面一样,抽样频率被假定为2Hz

? ?mval --- 给定频率点的给定幅度值的向量,因此也必须和fpts的长度一样,默认使用海明窗。

? ? ? ? ? ? ? ?(2)调用方法:b = fir2(N,fpts,mval,taper)

? ? ?本命令用来调用其它的窗函数。?

2FIR滤波器的实现

(1) FIR滤波器的时域卷积实现

调用方法:f3=conv(f1,f2)

输入参数:f1,f2--- 输入的数字信号

输出参数:f3--- 输入的两个信号的卷积结果

(2) FIR滤波器的filter滤波实现

调用方法:y=filter(b,a,x)

输入参数:ba --- 差分方程系数。对于FIR滤波器,a设置为1即可。

x --- 输入序列。

输出参数:y --- 滤波输出序列。

MATLAB实现主要包括两个部分,即滤波器设计和滤波。代码如下:

%%fir滤波器系数设计

fl_kaiser= [750 1150];

fl_mag= [1 0];

fl_dev= [0.01 0.05];

[fl_n_kaiser,fl_wn,fl_beta,fl_ftype]= kaiserord(fl_kaiser,fl_mag,fl_dev,fs);

h =fir1(fl_n_kaiser,fl_wn,fl_ftype,kaiser(fl_n_kaiser+1,fl_beta));

%%滤波函数

y =filter(h,1,x);

3wav格式音频文件读取函数

调用方法:y = wavread(file)

[y,fs,nBits]= wavread(file)

输入参数:file --- wav格式的音频文件。

输出参数:y --- 存放音频数据的矩阵。

fs --- 该音频文件的采样频率。

nBits--- 语音信号的每个采样点所占用的位数。

4wav格式音频文件写入函数

调用方法:wavwrite(y,fs,nBits,wavfile)

wavwrite(y,fs,wavfile)

wavwrite(y,wavfile)

输入参数:y --- 写入文件的音频数据。

fs--- 写入文件的音频信号采样频率。缺省的情况下默认fs8000Hz

nBits--- 表示语音信号的每个取样点所占用的位数,它必须是8,16,2432nBits缺省的情况下默认为16

输出参数:wavfile --- 生成的WAV文件的文件名。

实验内容及步骤

1、对两个信号进行卷积

已知两个信号序列:

实验具体步骤为:

(1) ? conv函数求两个序列的卷积和;

(2) ? 绘制三个序列的波形;

(3) ? 保存图形化显示结果,完成相应的实验报告。

?

2、对音频信号进行滤波

实验具体步骤为:

(1) ? 利用wavread函数(或者audioread函数)将加噪声的音频文件第一场雪加噪声.wav”读入Matlab的工作空间;

(2) ? 利用load函数从h315.mat文件中读取315阶离散时间带通滤波器的脉冲响应 ,用conv函数求两个序列的卷积和,并利用wavwrite函数(或者audiowrite函数)将结果写入音频文件第一场雪滤波315.wav”中。

(3) ? 绘制两个音频信号的波形,并通过音频播放器比较两个音频信号的区别。

(4) ? 保存图形化显示结果,完成相应的实验报告。

?

3、对音频文件进行滤波

实验具体步骤为:

(1) ? 利用wavread函数(或者audioread函数)将加噪声的音频文件第一场雪加噪声.wav”读入Matlab的工作空间;

(2) ? 利用load函数从h315.mat文件中读取315阶离散时间带通滤波器的脉冲响应 ,用conv函数求两个序列的卷积和,并利用wavwrite函数(或者audiowrite函数)将结果写入音频文件第一场雪滤波315.wav”中。

(3) ? 绘制两个音频信号的波形,并通过音频播放器比较两个音频信号的区别。

(4) ? 保存图形化显示结果,完成相应的实验报告。

?

4、采用凯泽窗设计一个具有以下指标的FIR带通滤波器:

长度为M=35,采样频率fs=16000Hz,下阻带边缘fs1=50Hz,下通带边缘fp1=200Hz,上通带边缘fp2=3300Hz,上阻带边缘fs2=3450Hz,通带的纹波小于5%,阻带衰减δs不小于50dB

实验具体步骤为:

(1) ? 画出它的幅频和相频响应(freqz函数);

(2) ? 利用wavread函数(或者audioread函数)将加噪声的音频文件第一场雪加噪声.wav”读入Matlab的工作空间;

(3) ? 基于设计得到的FIR带通滤波器,分别采用滤波(filter函数)和卷积的方法,得到音频数据的滤波结果,并分别存入音频文件第一场雪filter滤波35.wav”第一场雪conv滤波35.wav”中;

(4) ? 绘制三个音频信号的波形,并通过音频播放器比较三个音频信号的区别。

(5) ? 保存图形化显示结果,完成相应的实验报告。

?

5、采用凯泽窗设计一个具有以下指标的FIR带通滤波器:

采样频率fs=16000Hz,下阻带边缘fs1=50Hz,下通带边缘fp1=200Hz,上通带边缘fp2=3300Hz,上阻带边缘fs2=3450Hz,通带的纹波小于5%,阻带衰减δs不小于50dB

实验具体步骤为:

(1) ? 计算滤波器的长度M,并画出它的幅频和相频响应(freqz函数);

(2) ? 利用wavread函数(或者audioread函数)将加噪声的音频文件第一场雪加噪声.wav”读入Matlab的工作空间;

(3) ? 基于设计得到的FIR带通滤波器,分别采用滤波(filter函数)和卷积的方法,得到音频数据的滤波结果,分别存入音频文件第一场雪filter滤波(M.wav”和音频文件第一场雪conv滤波(M.wav”中。

(4) ? 绘制三个音频信号的波形,并通过音频播放器比较三个音频信号的区别。

(5) ? 保存图形化显示结果,完成相应的实验报告。

?

实验报告要求

(1) ? ?给出实验原理;

(2) ? ?列出调试通过的实验程序;

(3) ? ?给出实验程序产生的图形曲线;

(4) ? ?分析实验中的问题,给出实验结论。

?

上一条:快速傅里叶变换及信号的频域分析
下一条:虚拟仿真单片机基础

你可能也喜欢 ...

发表评论