毕业设计121广西工学院数字信号的处理与滤波设计.docx
- 文档编号:25922532
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:26
- 大小:71.83KB
毕业设计121广西工学院数字信号的处理与滤波设计.docx
《毕业设计121广西工学院数字信号的处理与滤波设计.docx》由会员分享,可在线阅读,更多相关《毕业设计121广西工学院数字信号的处理与滤波设计.docx(26页珍藏版)》请在冰豆网上搜索。
毕业设计121广西工学院数字信号的处理与滤波设计
——装订线——
数字信号的处理与滤波
摘要:
数字信号处理是利用计算机或专用处理设备,以数值计算的方法,对信号进行采集、滤波、增强、压缩、估值和识别等加工处理,借以达到提取信息和便于应用的目的,其应用范围涉及几乎所有的工程技术领域。
语音信号的处理与滤波是数字信号处理中一个重要的组成部分。
本课题主要研究的就是语音信号的处理与滤波,然后设计一个用户界面实现语音的处理与滤波的功能。
使用MATLAB进行滤波器的设计,使用MATLAB的GUIDE工具设计用户界面。
关键词:
数字滤波器;双线性变换;窗函数;凯泽窗;GUIDE
一设计题目
所选题目为设计五:
语音信号的处理与滤波
内容:
录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。
基本要求:
1 语音信号的采集
利用Windows下的录音机,录制一段自己的话音,时间在5s内。
然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
通过wavread函数的使用,要求理解掌握采样频率、采样位数等概念。
2 语音信号的频谱分析
要求首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。
其程序如下:
3 设计数字滤波器和画出其频率响应
给出各滤波器的性能指标:
(1)低通滤波器性能指标 fb=1000Hz,fc=1200Hz,As=100dB,Ap=1dB。
(2)高通滤波器性能指标 fc=4800Hz,fb=5000HzAs=100dB,Ap=1dB。
(3)带通滤波器性能指标 fb1=1200Hz,fb2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB。
要求用窗函数法和双线性变换法设计上面要求的3种滤波器。
在Matlab中,可以利用函数fir1设计FIR滤波器,可以利用函数butte,cheby1和ellip设计IIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应。
4 用滤波器对信号进行滤波
要求用自己设计的各种滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。
5 比较滤波前后语音信号的波形及频谱
要求在一个窗口同时画出滤波前后的波形及频谱。
6 回放语音信号
在Matlab中,函数sound可以对声音进行回放。
其调用格式:
sound(x,fs,bits);可以感觉滤波前后的声音有变化。
7 设计系统界面(用MATLAB中GUIDE工具,要求自学)
为了使编制的程序操作方便,要求有能力的学生,设计处理系统的用户界面。
在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数,显示滤波器的频率响应,选择信号等。
二设计所涉及原理
1对信号进行采样
抽样原理:
要保证从信号抽样后的离散时间信号无失真地恢复原始时间连续信号(即抽样不会导致任何信息丢失),必须满足:
信号是频带受限的(信号频率区间有限);采样率
至少是信号最高频率的两倍。
2IIR滤波器
语音信号的处理与滤波
一设计题目
所选题目为设计五:
语音信号的处理与滤波
内容:
录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。
基本要求:
1 语音信号的采集
利用Windows下的录音机,录制一段自己的话音,时间在5s内。
然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
通过wavread函数的使用,要求理解掌握采样频率、采样位数等概念。
2 语音信号的频谱分析
要求首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。
其程序如下:
3 设计数字滤波器和画出其频率响应
给出各滤波器的性能指标:
(1)低通滤波器性能指标 fb=1000Hz,fc=1200Hz,As=100dB,Ap=1dB。
(2)高通滤波器性能指标 fc=4800Hz,fb=5000HzAs=100dB,Ap=1dB。
(3)带通滤波器性能指标 fb1=1200Hz,fb2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB。
要求用窗函数法和双线性变换法设计上面要求的3种滤波器。
在Matlab中,可以利用函数fir1设计FIR滤波器,可以利用函数butte,cheby1和ellip设计IIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应。
4 用滤波器对信号进行滤波
要求用自己设计的各种滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。
5 比较滤波前后语音信号的波形及频谱
要求在一个窗口同时画出滤波前后的波形及频谱。
6 回放语音信号
在Matlab中,函数sound可以对声音进行回放。
其调用格式:
sound(x,fs,bits);可以感觉滤波前后的声音有变化。
7 设计系统界面(用MATLAB中GUIDE工具,要求自学)
为了使编制的程序操作方便,要求有能力的学生,设计处理系统的用户界面。
在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数,显示滤波器的频率响应,选择信号等。
二设计所涉及原理
1对信号进行采样
抽样原理:
要保证从信号抽样后的离散时间信号无失真地恢复原始时间连续信号(即抽样不会导致任何信息丢失),必须满足:
信号是频带受限的(信号频率区间有限);采样率
至少是信号最高频率的两倍。
2IIR滤波器
(1)脉冲响应不变法:
用数字滤波器的单位脉冲响应序列h(n)模仿模拟滤波器的冲激响应ha(t),让h(n)正好等于ha(t)的采样值,即h(n)=ha(nT)其中T为采样间隔,如果以Ha(S)及H(z)分别表示ha(t)的拉式变换及h(n)的Z变换,则
(2)双线性变换法:
S平面与z平面之间满足以下映射关系:
s平面的虚轴单值地映射于z平面的单位圆上,s平面的左半平面完全映射到z平面的单位圆内。
双线性变换不存在混叠问题。
双线性变换时一种非线性变换
,这种非线性引起的幅频特性畸变可通过预畸而得到校正。
IIR低通、高通、带通数字滤波器设计采用双线性原型变换公式:
变换类型
变换关系式
备 注
低通
高通
带通
带通的上下边带临界频率
以低通数字滤波器为例,将设计步骤归纳如下:
1.确定数字滤波器的性能指标:
通带临界频率fp、阻带临界频率fr;通带内的最大衰减Ap;阻带内的最小衰减Ar;采样周期T;(3). 确定相应的数字角频率,ωp=2πfpT;ωr=2πfrT;
(4). 计算经过预畸的相应模拟低通原型的频率,
;
(5). 根据Ωp和Ωr计算模拟低通原型滤波器的阶数N,并求得低通原型的传递函数Ha(s);(6). 用上面的双线性变换公式代入Ha(s),求出所设计的传递函数H(z);(7).分析滤波器特性,检查其指标是否满足要求。
3FIR滤波器
线性相位实系数FIR滤波器按其N值奇偶和h(n)的奇偶对称性分为四种:
(1)、h(n)为偶对称,N为奇数
H(ejω)的幅值关于ω=0,π,2π成偶对称。
(2)、h(n)为偶对称,N为偶数
H(ejω)的幅值关于ω=π成奇对称,不适合作高通。
(3)、h(n)为奇对称,N为奇数
H(ejω)的幅值关于ω=0,π,2π成奇对称,不适合作高通和低通。
(4)、h(n)为奇对称,N为偶数
H(ejω)ω=0、2π=0,不适合作低通。
(5)窗口法
窗函数法设计线性相位FIR滤波器步骤
∙确定数字滤波器的性能要求:
临界频率{ωk},滤波器单位脉冲响应长度N;
∙根据性能要求,合理选择单位脉冲响应h(n)的奇偶对称性,从而确定理想频率响应Hd(ejω)的幅频特性和相频特性;
∙求理想单位脉冲响应hd(n),在实际计算中,可对Hd(ejω)按M(M远大于N)点等距离采样,并对其求IDFT得hM(n),用hM(n)代替hd(n);
∙选择适当的窗函数w(n),根据h(n)=hd(n)w(n)求所需设计的FIR滤波器单位脉冲响应;
∙求H(ejω),分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述设计过程,以得到满意的结果。
窗函数的傅式变换W(ejω)的主瓣决定了H(ejω)过渡带宽。
W(ejω)的旁瓣大小和多少决定了H(ejω)在通带和阻带范围内波动幅度,常用的几种窗函数有:
∙矩形窗w(n)=RN(n);
∙Hanning窗
;
∙Hamming窗
;
∙Blackmen窗
;
∙Kaiser窗
。
式中Io(x)为零阶贝塞尔函数。
三设计工具
MATLAB7.0.1国际标准版
四设计进程说明
设计主要分为两大块:
(一)主程序
这部分主要实现了设计要求的第1~6个要求(见附录一)
1程序中首先用函数wavread对所录制的语音信号(大小为5秒左右)进行采样,采样频率为fs=22050.
2画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。
3利用函数fir1设计FIR滤波器,并且用设计的滤波器对语音信号进行滤波(注:
主程序中所使用滤波器为FIR滤波器——hamming窗)
4比较滤波前后语音信号的波形及频谱
5用sound(x,fs,bits)函数对所滤声音进行回放,并与原始声音进行比较
(二)用户界面(包含所界面程序见附录二)
这一部分主要实现了设计要求的第7步,界面中使用了所给定的三种指标分别对录制语音进行滤波。
界面中可以选择滤波器的类型,可以显示滤波前的声音频域图形,滤波后的频域波形。
还可以对原始波形和滤波后的波形进行比较等功能。
附录一主程序
fs=22050;
x1=wavread('f:
\io4.wav');
t=0:
1/22050:
(size(x1)-1)/22050;
Au=0.03;
d=[Au*cos(2*pi*5000*t)]';
x2=x1+d;%加入噪声
%用滤波器进行滤波(汉宁窗)
wp=0.25*pi;
ws=0.3*pi;
wdelta=ws-wp;
N=ceil(6.6*pi/wdelta);%取整
wn=(0.2+0.3)*pi/2;%数字截止频率
b=fir1(N,wn/pi,hamming(N+1));%选择窗函数,并归一化截止频率
figure
(1)
freqz(b,1,512);
f2=fftfilt(b,x2);
%显示波形图
figure
(2)
subplot(2,1,1);plot(t,x2);title('滤波前的时域波形');
subplot(2,1,2);plot(t,f2);title('滤波后的时域波形');
%显示频谱图
F0=fft(f2,1024);
f=fs*(0:
511)/1024;
figure(3)
y2=fft(x2,1024);
subplot(2,1,1);plot(f,abs(y2(1:
512)));title('滤波前的频谱');xlabel('Hz');ylabel('fuzhi');%画出滤波前的频谱图
subplot(2,1,2);plot(f,abs(F0(1:
512)));title('滤波后的频谱');xlabel('Hz');ylabel('fuzhi');%画出滤波后的频谱图
%声音比较
chooise=input('1、原始语音2、加噪后语音3、滤波后语音');
if(chooise==1)
sound(x1,22050);%播放原始语音
end
if(chooise==2)
sound(x2,22050);%播放加噪后的语音
end
if(chooise==3)
sound(f2,22050);%播放滤波后的信号
end
附录二界面与程序
程序摘要如下:
functionpushbutton1_Callback(hObject,eventdata,handles)%滤波后的声音
ifhandles.but1==1
sound(handles.sound1,22050)
end
ifhandles.but2==1
sound(handles.sound2,22050)
end
ifhandles.but3==1
sound(handles.sound3*5,22050)
end
ifhandles.but4==1
sound(handles.sound4,22050)
end
ifhandles.but5==1
sound(handles.sound5,22050)
end
ifhandles.but6==1
sound(handles.sound6,22050)
end
%滤波前的语音
functionpushbutton2_Callback(hObject,eventdata,handles)
fs=8000;
[y,fs]=wavread('io4.wav');
sound(y,fs);
%滤波前的信息
functionpushbutton3_Callback(hObject,eventdata,handles)
fs=8000;
[y,fs]=wavread('io4.wav');
time=(1:
length(y))/fs;_
set(gcf,'CurrentAxes',handles.axes1);
plot(time,y);
title('时域');
Y=fft(y,8000);
Amplitude=abs(Y);
set(gcf,'CurrentAxes',handles.axes2);
plot(Amplitude);
title('频域');
%滤波后的信息
functionpushbutton4_Callback(hObject,eventdata,handles)ifhandles.but1==1
fs=22050;
Wp=1000;Ws=1200;
Rp=1;Rs=100;
wc=2*fs*tan(2*pi*Wp/(2*fs))%先转化角频率再转换为模拟域频率
wt=2*fs*tan(2*pi*Ws/(2*fs))
[N,wn]=cheb1ord(wc,wt,1,100,'s');%在模拟域计算阶数和固有频率
[B,A]=cheby1(N,1,wn,'low','s');%利用上面得到的结果设计滤波器
[bz,az]=bilinear(B,A,8000);%用双线性变换法得到数字滤波器的原型
[y,fs]=wavread('io4.wav');
x=filter(bz,az,y);
X=fft(x,4096);
set(gcf,'CurrentAxes',handles.axes3)
plot(x);
title('滤波后语音信号波形');
set(gcf,'CurrentAxes',handles.axes4)
plot(abs(X));
title('滤波后语音信号的谱')
handles.sound1=x;
guidata(hObject,handles);
end
ifhandles.but2==1
fs=22050;
Wp=[12003000]/4000;Ws=[10003200]/4000;
Rp=1;Rs=100;
[n,Wn]=buttord(Wp,Ws,Rp,Rs);
[b,a]=butter(n,Wn);
[y,fs]=wavread('io4.wav');
x=filter(b,a,y);
X=fft(x,4096);
set(gcf,'CurrentAxes',handles.axes3)
plot(x);
title('滤波后语音信号波形');
set(gcf,'CurrentAxes',handles.axes4)
plot(abs(X));
title('滤波后语音信号的谱')
handles.sound2=x;
guidata(hObject,handles);
end
ifhandles.but3==1
fs=22050;
Wp=5000;Ws=4800;
Rp=1;Rs=100;
wc=2*fs*tan(2*pi*Wp/(2*fs))%先转化角频率再转换为模拟域频率
wt=2*fs*tan(2*pi*Ws/(2*fs))
[N,wn]=cheb1ord(wc,wt,1,100,'s');%在模拟域计算阶数和固有频率
[B,A]=cheby1(N,1,wn,'high','s');%利用上面得到的结果设计滤波器
[bz,az]=bilinear(B,A,22050);%用双线性变换法得到数字滤波器的原型
[y,fs]=wavread('io4.wav');
x=filter(bz,az,y);
X=fft(x);
set(gcf,'CurrentAxes',handles.axes3)
plot(x);
title('滤波后语音信号波形');
set(gcf,'CurrentAxes',handles.axes4)
plot(abs(X));
title('滤波后语音信号的谱')
handles.sound3=x;
guidata(hObject,handles);
end
ifhandles.but4==1
y=wavread('io4.wav');
fs=1000;
fp=1200;
Fs=22050;
ws=fs/Fs*2*pi;%
wp=fp/Fs*2*pi;
w1=(ws+wp)/2;
width=wp-ws;%
N=ceil(12.8*pi/width)+1;
window=kaiser(N,10.056);%
w1=w1/pi;
b=fir1(N-1,w1,window);
y1=fftfilt(b,y);%
Y1=fft(y1,2048);
set(gcf,'CurrentAxes',handles.axes3);
plot(y1);%
title('滤波后的时域波形');
set(gcf,'CurrentAxes',handles.axes4);
plot(abs(Y1));
title('滤波后的频域波形');
handles.sound4=y1;
guidata(hObject,handles);
end
ifhandles.but6==1
Fs=22050;
[y,Fs]=wavread('io4.wav');
fs=5000;
fp=4800;
Fs=22050;
ws=fs/Fs*2*pi;
wp=fp/Fs*2*pi;
w1=(ws+wp)/2;%理想高通滤波器中心频率
width=ws-wp;
N=ceil(12.8*pi/width)+1;
window=kaiser(N,10.056);%window=kaiser(N,handles.beta);
w1=w1/pi;
b=fir1(N-1,w1,'high',window);
y1=fftfilt(b,y);
Y1=fft(y1,2048);
set(gcf,'CurrentAxes',handles.axes3);
plot(y1);%
title('滤波后的时域波形');
set(gcf,'CurrentAxes',handles.axes4);
plot(abs(Y1));
title('滤波后的频域波形');
handles.sound6=y1;
guidata(hObject,handles);
end
ifhandles.but5==1
%通过FIR带通滤波器
%输入带通滤波器的通带截止频率fp1,fp2阻带截止频率fs1,fs2和beta值
Fs=22050;
fs=1000;
fp=1200;
fp2=3000;
fs2=3200;
[y,Fs]=wavread('io4.wav');
ws1=fs/Fs*2*pi;
wp1=fp/Fs*2*pi;
wp2=fp2/Fs*2*pi;
ws2=fs2/Fs*2*pi;
w1=(ws1+wp1)/2;
w2=(wp2+ws2)/2;%理想带通滤波器上下截止频率
width=min((wp1-ws1),(ws2-wp2));%过渡带宽
N=ceil(12.8*pi/width)+1;
window=kaiser(N,10.056);
w1=w1/pi;w2=w2/pi;
b=fir1(N-1,[w1w2],'bandpass',window);
y1=fftfilt(b,y);
Y1=fft(y1,2048);
set(gcf,'CurrentAxes',handles.axes3);
plot(y1);%滤波后波形
title('滤波后的时域波形');
set(gcf,'CurrentAxes',handles.axes4);
plot(abs(Y1));%滤波后频谱
title('滤波后的频域波形');
handles.sound5=y1;
guidata(hObject,handles);
end
functionradiobutton5_Callback(hObject,eventdata,handles)
%FIR低通¨
handles.but4=get(hObject,'value')
handles.but1=0;
handles.but2=0;
handles.but3=0;
handles.but5=0;
handles.but6=0;
guidata(hObject,handles);
y=wavread('io4.wav');
fs=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 121 广西 工学院 数字信号 处理 滤波 设计