北航数字信号处理上机实验二实验报告Word文档格式.docx
- 文档编号:22029705
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:11
- 大小:220.05KB
北航数字信号处理上机实验二实验报告Word文档格式.docx
《北航数字信号处理上机实验二实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《北航数字信号处理上机实验二实验报告Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
Matlab函数fir1和fir2可以用来设计加窗的有限冲激响应数字滤波器。
两个函数均产生一个线性相位设计。
函数fir1可用于设计常规的低通、高通、带通和带阻线性相位有限冲激响应滤波器。
对于抽样频率为2Hz的情况,命令
b=fir1(N,Wn)
在向量b中返回以
的升幂排列的N阶低通或带通滤波器的冲激响应系数。
对于低通设计,归一化截止频率由标量Wn给定,它是在0和1之间的一个数。
对于带通设计,Wn是包含指定通带边界的一个双元素向量[Wn1,Wn2],其中0<
Wn1<
Wn2<
1。
命令
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”中。
绘制两个音频信号的波形,并通过音频播放器比较两个音频信号的区别。
[a,Fs,bits]=wavread('
第一场雪加噪声'
);
load('
h40.mat'
a=a'
;
a1=a(1,1:
end);
a2=a(2,1:
h1n=h40;
Y1=conv(a1,h1n);
subplot(6,1,1)
plot(a1);
xlabel('
n1'
ylabel('
a1'
subplot(6,1,2)
plot(h1n);
n2'
h1n'
subplot(6,1,3)
plot(Y1);
y1'
a1*h1n'
Y2=conv(a2,h1n);
subplot(6,1,4)
plot(a2);
a2'
subplot(6,1,5)
subplot(6,1,6)
plot(Y2);
y2'
a2*h1n'
ak=zeros(2,3109334);
ak(1,1:
end)=Y1;
ak(2,1:
end)=Y2;
ak=ak'
wavwrite(ak,Fs,bits,'
第一场雪滤波40.wav'
说明:
n1为左声道信号,n2为右声道信号
3、利用wavread函数(或者audioread函数)将加噪声的音频文件“第一场雪加噪声.wav”读入Matlab的工作空间,利用load函数从h392.mat文件中读取392阶离散时间带通滤波器的脉冲响应
,用conv函数求两个序列的卷积和,并利用wavwrite函数(或者audiowrite函数)将结果写入音频文件“第一场雪滤波392.wav”中。
h392.mat'
n1=1:
3109295;
n2=1:
393;
y1=1:
(3109295+393-1);
h1n=h392;
Y3=conv(a1,h1n);
plot(n1,a1);
plot(n2,h1n);
plot(y1,Y3);
Y4=conv(a2,h1n);
plot(n1,a2);
plot(y1,Y4);
ak=zeros(2,3109687);
end)=Y3;
end)=Y4;
第一场雪滤波392.wav'
plot(fft(a))
(3)分析与说明
通过音频播放器播放原始音频信号及经2、3处理后的音频信号可以发现,原始信号能听到明显的噪声,而2、3处理后噪声音量变小,信噪比变大,说明经过带通滤波器噪声被较好地滤除。
同时发现经393阶带通滤波器处理后的音频噪声比经40阶带通滤波器处理后的音频噪声小,说明阶数越高滤波效果越好。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北航 数字信号 处理 上机 实验 报告