北航数字信号处理上机实验二实验报告.docx

上传人:b****1 文档编号:2701456 上传时间:2023-05-04 格式:DOCX 页数:11 大小:224.79KB
下载 相关 举报
北航数字信号处理上机实验二实验报告.docx_第1页
第1页 / 共11页
北航数字信号处理上机实验二实验报告.docx_第2页
第2页 / 共11页
北航数字信号处理上机实验二实验报告.docx_第3页
第3页 / 共11页
北航数字信号处理上机实验二实验报告.docx_第4页
第4页 / 共11页
北航数字信号处理上机实验二实验报告.docx_第5页
第5页 / 共11页
北航数字信号处理上机实验二实验报告.docx_第6页
第6页 / 共11页
北航数字信号处理上机实验二实验报告.docx_第7页
第7页 / 共11页
北航数字信号处理上机实验二实验报告.docx_第8页
第8页 / 共11页
北航数字信号处理上机实验二实验报告.docx_第9页
第9页 / 共11页
北航数字信号处理上机实验二实验报告.docx_第10页
第10页 / 共11页
北航数字信号处理上机实验二实验报告.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

北航数字信号处理上机实验二实验报告.docx

《北航数字信号处理上机实验二实验报告.docx》由会员分享,可在线阅读,更多相关《北航数字信号处理上机实验二实验报告.docx(11页珍藏版)》请在冰点文库上搜索。

北航数字信号处理上机实验二实验报告.docx

北航数字信号处理上机实验二实验报告

 

离散时间信号处理实验报告

 

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

 

班级

学号

姓名

日期

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

滤波器设计与实现是数字信号处理中最基本的内容之一。

我们知道滤波器分IIR滤波器(无限冲激响应滤波器)和FIR滤波器(有限冲激响应滤波器)两种。

FIR滤波器的设计方法以直接逼近所需离散设计系统的频率响应为基础。

FIR滤波器可以很容易地获得线性相移特性,不存在不稳定的问题,是实际系统中广为采用的一种数字滤波器。

FIR滤波器的设计,通常有窗函数设计法、频率抽样设计法和最佳逼近设计法。

窗函数设计法比较简单,它的频率特性是理想滤波器频谱与窗的频谱的卷积,因而,其频率特性取决于窗的类型和长度。

频率抽样设计法比较直观,但由于频域的采样会造成时域的混叠,从而滤波器叠性能不可能很高,为提高滤波器的性能,可以在过渡带加上0~1之间的过渡点。

本实验主要采用窗函数设计法。

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

相关Matlab函数说明

1、有限冲激响应数字滤波器设计函数fir1和fir2

Matlab函数fir1和fir2可以用来设计加窗的有限冲激响应数字滤波器。

两个函数均产生一个线性相位设计。

函数fir1可用于设计常规的低通、高通、带通和带阻线性相位有限冲激响应滤波器。

对于抽样频率为2Hz的情况,命令

b=fir1(N,Wn)

在向量b中返回以

的升幂排列的N阶低通或带通滤波器的冲激响应系数。

对于低通设计,归一化截止频率由标量Wn给定,它是在0和1之间的一个数。

对于带通设计,Wn是包含指定通带边界的一个双元素向量[Wn1,Wn2],其中0

命令

b=fir1(N,Wn,’high’)

其中N为一个偶数,用于设计高通滤波器。

命令

b=fir1(N,Wn,’stop’)

其中Wn是一个双元素向量,用于设计带阻有限冲激响应滤波器。

若没有指定,用海明窗作为默认值。

命令

b=fir(N,Wn,taper)

使用在向量taper中给定的长度为N+1的窗系数。

然而,窗系数必须事先用一个适当的MATLAB函数来产生,如blackman,hamming,hanning,chebwin或kaiser。

用到的命令为

taper=blackman(N)taper=hamming(N)taper=hanning(N)taper=chebwin(N)taper=kaiser(N,beta)

函数fir2可用于设计带有任意形状幅度响应的线性相位有限冲激响应滤波器。

在其基本形状中,命令是

b=fir2(N,fpts,mval)

它在长度为N+1的向量b中返回以

的升幂排列的冲激响应系数。

fpts是给定的频率点向量,在0到1范围内以递增的顺序排列,其中第一个频率点是0,而最后的频率点是1。

和前面一样,抽样频率被假定为2Hz。

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

为使用其他窗口,所用到的命令是

b=fir2(N,fpts,mval,taper)

其中向量taper包含给定的窗系数。

2、FIR滤波器的实现

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

滤波器是一种能够让某些频率分量通过而拒绝其他频率成分或对某些频率成分进行修正的系统。

对于一个线性时不变系统,其时域输入和输出关系可用卷积的方法描述,

对时域而言,

均为数字信号,可在数字系统中实现。

滤波器按照单位脉冲响应

在某一有限区间外是否为零分为有限冲击响应(FIR)滤波器和无限冲击响应(IIR)滤波器。

若单位脉冲响应

在某一有限区间以外都是零,称为有限冲击响应FIR系统;若单位脉冲响应

在某一有限区间外不是零,则称为无限冲击响应IIR系统。

在线性时不变系统的卷积描述中,对于FIR滤波器,

为有限项,范围从0到M,故

即通过卷积运算,可实现对输入信号的滤波处理。

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

MATLAB中有滤波函数filter,用法为y=filter(b,a,x)。

其中b和a为差分方程系数,x为输入序列,y为滤波输出序列。

对于FIR滤波器,a设置为1即可。

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

代码如下:

%%fir滤波器系数设计

fl_kaiser=[7501150];

fl_mag=[10];

fl_dev=[0.010.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);

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

y=wavread(file)

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

输入参数:

file为wav格式的音频文件。

输出参数:

y为存放音频数据的矩阵;fs为该音频文件的采样频率;nBits表示语音信号的每个采样点所占用的位数。

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

wavwrite(y,fs,nBits,wavfile)

wavwrite(y,fs,wavfile)

wavwrite(y,wavfile)

输入参数:

y是存放要写入文件的音频数据,fs是写入文件的音频信号采样频率,缺省的情况下默认fs为8000Hz。

nBits是表示语音信号的每个取样点所占用的位数,它必须是8,16,24或32。

nBits缺省的情况下默认为16。

wavfile是生成的WAV文件的文件名。

 

实验题目

1、已知两个信号序列:

用conv函数求两个序列的卷积和,并绘制三个序列的波形。

(1)MATLAB源代码:

clc;

n1=0:

20;

n2=0:

10;

y1=0:

30;

x1n=0.8.^n1;

x2n=ones(1,11);

y=conv(x1n,x2n);

subplot(3,1,1)

stem(n1,x1n);

subplot(3,1,2)

stem(n2,x2n);

subplot(3,1,3)

stem(y1,y);

(2)实验结果:

第一张图为f1,第二张图为f2,第三张图为f1*f2

 

2、利用wavread函数(或者audioread函数)将加噪声的音频文件“第一场雪加噪声.wav”读入Matlab的工作空间,利用load函数从h40.mat文件中读取40阶离散时间带通滤波器的脉冲响应

,用conv函数求两个序列的卷积和,并利用wavwrite函数(或者audiowrite函数)将结果写入音频文件“第一场雪滤波40.wav”中。

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

(1)MATLAB源代码:

[a,Fs,bits]=wavread('第一场雪加噪声');

load('h40.mat');

a=a';

a1=a(1,1:

end);

a2=a(2,1:

end);

h1n=h40;

Y1=conv(a1,h1n);

subplot(6,1,1)

plot(a1);

xlabel('n1');

ylabel('a1');

subplot(6,1,2)

plot(h1n);

xlabel('n2');

ylabel('h1n');

subplot(6,1,3)

plot(Y1);

xlabel('y1');

ylabel('a1*h1n');

Y2=conv(a2,h1n);

subplot(6,1,4)

plot(a2);

xlabel('n1');

ylabel('a2');

subplot(6,1,5)

plot(h1n);

xlabel('n2');

ylabel('h1n');

subplot(6,1,6)

plot(Y2);

xlabel('y2');

ylabel('a2*h1n');

ak=zeros(2,3109334);

ak(1,1:

end)=Y1;

ak(2,1:

end)=Y2;

ak=ak';

wavwrite(ak,Fs,bits,'第一场雪滤波40.wav');

 

(2)实验结果:

说明:

n1为左声道信号,n2为右声道信号

3、利用wavread函数(或者audioread函数)将加噪声的音频文件“第一场雪加噪声.wav”读入Matlab的工作空间,利用load函数从h392.mat文件中读取392阶离散时间带通滤波器的脉冲响应

,用conv函数求两个序列的卷积和,并利用wavwrite函数(或者audiowrite函数)将结果写入音频文件“第一场雪滤波392.wav”中。

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

(1)MATLAB源代码:

[a,Fs,bits]=wavread('第一场雪加噪声');

load('h392.mat');

a=a';

a1=a(1,1:

end);

a2=a(2,1:

end);

n1=1:

3109295;

n2=1:

393;

y1=1:

(3109295+393-1);

h1n=h392;

Y3=conv(a1,h1n);

subplot(6,1,1)

plot(n1,a1);

xlabel('n1');

ylabel('a1');

subplot(6,1,2)

plot(n2,h1n);

xlabel('n2');

ylabel('h1n');

subplot(6,1,3)

plot(y1,Y3);

xlabel('y1');

ylabel('a1*h1n');

Y4=conv(a2,h1n);

subplot(6,1,4)

plot(n1,a2);

xlabel('n1');

ylabel('a2');

subplot(6,1,5)

plot(n2,h1n);

xlabel('n2');

ylabel('h1n');

subplot(6,1,6)

plot(y1,Y4);

xlabel('y2');

ylabel('a2*h1n');

ak=zeros(2,3109687);

ak(1,1:

end)=Y3;

ak(2,1:

end)=Y4;

ak=ak';

wavwrite(ak,Fs,bits,'第一场雪滤波392.wav');

plot(fft(a))

 

(2)实验结果:

说明:

n1为左声道信号,n2为右声道信号

(3)分析与说明

通过音频播放器播放原始音频信号及经2、3处理后的音频信号可以发现,原始信号能听到明显的噪声,而2、3处理后噪声音量变小,信噪比变大,说明经过带通滤波器噪声被较好地滤除。

同时发现经393阶带通滤波器处理后的音频噪声比经40阶带通滤波器处理后的音频噪声小,说明阶数越高滤波效果越好。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2