数字信号处理滤波
摘:
数字信号处理利计算机专处理设备数值计算方法信号进行采集滤波增强压缩估值识等加工处理达提取信息便应目应范围涉工程技术领域语音信号处理滤波数字信号处理中重组成部分课题研究语音信号处理滤波然设计户界面实现语音处理滤波功MATLAB进行滤波器设计MATLABGUIDE工具设计户界面
关键词:数字滤波器双线性变换窗函数凯泽窗GUIDE
设计题目
选题目设计五:语音信号处理滤波
容:录制段语音信号录制信号进行采样画出采样语音信号时域波形频谱图定滤波器性指标采窗函数法双线性变换设计滤波器画出滤波器频率响应然设计滤波器采集信号进行滤波画出滤波信号时域波形频谱滤波前信号进行分析信号变化回放语音信号设计信号处理系统界面
基求:
1 语音信号采集
利Windows录音机录制段话音时间5s然Matlab软件台利函数wavread语音信号进行采样记住采样频率采样点数通wavread函数求理解掌握采样频率采样位数等概念
2 语音信号频谱分析
求首先画出语音信号时域波形然语音号进行快速傅里叶变换信号频谱特性加深频谱特性理解程序:
3 设计数字滤波器画出频率响应
出滤波器性指标:
(1)低通滤波器性指标 fb=1 000 Hzfc=1 200 HzAs=100 dBAp=1 dB
(2)高通滤波器性指标 fc=4 800 Hzfb=5 000 Hz As=100 dBAp=1 dB
(3)带通滤波器性指标 fb1=1 200 Hzfb2=3 000 Hzfc1=1 000 Hzfc2=3 200 HzAs=100 dBAp=1 dB
求窗函数法双线性变换法设计面求3种滤波器Matlab中利函数fir1设计FIR滤波器利函数buttecheby1ellip设计IIR滤波器利Matlab中函数freqz画出滤波器频率响应
4 滤波器信号进行滤波
求设计种滤波器分采集信号进行滤波Matlab中FIR滤波器利函数fftfilt信号进行滤波IIR滤波器利函数filter信号进行滤波
5 较滤波前语音信号波形频谱
求窗口时画出滤波前波形频谱
6 回放语音信号
Matlab中函数sound声音进行回放调格式:sound(xfsbits)感觉滤波前声音变化
7 设计系统界面(MATLAB中GUIDE工具求学)
编制程序操作方便求力学生设计处理系统户界面设计系统界面选择滤波器类型输入滤波器参数显示滤波器频率响应选择信号等
二 设计涉原理
1 信号进行采样
抽样原理:保证信号抽样离散时间信号失真恢复原始时间连续信号(抽样会导致信息丢失)必须满足:信号频带受限(信号频率区间限)采样率 少信号高频率两倍
2 IIR滤波器
语音信号处理滤波
设计题目
选题目设计五:语音信号处理滤波
容:录制段语音信号录制信号进行采样画出采样语音信号时域波形频谱图定滤波器性指标采窗函数法双线性变换设计滤波器画出滤波器频率响应然设计滤波器采集信号进行滤波画出滤波信号时域波形频谱滤波前信号进行分析信号变化回放语音信号设计信号处理系统界面
基求:
1 语音信号采集
利Windows录音机录制段话音时间5s然Matlab软件台利函数wavread语音信号进行采样记住采样频率采样点数通wavread函数求理解掌握采样频率采样位数等概念
2 语音信号频谱分析
求首先画出语音信号时域波形然语音号进行快速傅里叶变换信号频谱特性加深频谱特性理解程序:
3 设计数字滤波器画出频率响应
出滤波器性指标:
(1)低通滤波器性指标 fb=1 000 Hzfc=1 200 HzAs=100 dBAp=1 dB
(2)高通滤波器性指标 fc=4 800 Hzfb=5 000 Hz As=100 dBAp=1 dB
(3)带通滤波器性指标 fb1=1 200 Hzfb2=3 000 Hzfc1=1 000 Hzfc2=3 200 HzAs=100 dBAp=1 dB
求窗函数法双线性变换法设计面求3种滤波器Matlab中利函数fir1设计FIR滤波器利函数buttecheby1ellip设计IIR滤波器利Matlab中函数freqz画出滤波器频率响应
4 滤波器信号进行滤波
求设计种滤波器分采集信号进行滤波Matlab中FIR滤波器利函数fftfilt信号进行滤波IIR滤波器利函数filter信号进行滤波
5 较滤波前语音信号波形频谱
求窗口时画出滤波前波形频谱
6 回放语音信号
Matlab中函数sound声音进行回放调格式:sound(xfsbits)感觉滤波前声音变化
7 设计系统界面(MATLAB中GUIDE工具求学)
编制程序操作方便求力学生设计处理系统户界面设计系统界面选择滤波器类型输入滤波器参数显示滤波器频率响应选择信号等
二 设计涉原理
1 信号进行采样
抽样原理:保证信号抽样离散时间信号失真恢复原始时间连续信号(抽样会导致信息丢失)必须满足:信号频带受限(信号频率区间限)采样率 少信号高频率两倍
2 IIR滤波器
(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) 确定相应数字角频率ωp2πfpTωr2πfrT
(4) 计算预畸相应模拟低通原型频率
(5) 根ΩpΩr计算模拟低通原型滤波器阶数N求低通原型传递函数Ha(s) (6) 面双线性变换公式代入Ha(s)求出设计传递函数H(z) (7)分析滤波器特性检查指标否满足求
3 FIR滤波器
线性相位实系数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ω) ω02π=0适合作低通
(5) 窗口法
窗函数法设计线性相位FIR滤波器步骤
· 确定数字滤波器性求:界频率{ωk}滤波器单位脉响应长度N
· 根性求合理选择单位脉响应h(n)奇偶称性确定理想频率响应Hd(ejω)幅频特性相频特性
· 求理想单位脉响应hd(n)实际计算中Hd(ejω)M(M远N)点等距离采样求IDFThM(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)零阶贝塞尔函数
三 设计工具
MATLAB 701国际标准版
四 设计进程说明
设计分两块:
()程序
部分实现设计求第1~6求(见附录)
1 程序中首先函数wavread录制语音信号(5秒左右)进行采样采样频率fs22050
2 画出语音信号时域波形然语音号进行快速傅里叶变换信号频谱特性
3 利函数fir1设计FIR滤波器设计滤波器语音信号进行滤波(注:程序中滤波器FIR滤波器——hamming窗)
4 较滤波前语音信号波形频谱
5 sound(xfsbits)函数滤声音进行回放原始声音进行较
(二)户界面(包含界面程序 见附录二)
部分实现设计求第7步界面中定三种指标分录制语音进行滤波
界面中选择滤波器类型显示滤波前声音频域图形滤波频域波形原始波形滤波波形进行较等功
附录 程序
fs22050
x1wavread('f\io4wav')
t0122050(size(x1)1)22050
Au003
d[Au*cos(2*pi*5000*t)]'
x2x1+d加入噪声
滤波器进行滤波(汉宁窗)
wp025*pi
ws03*pi
wdeltawswp
Nceil(66*piwdelta) 取整
wn(02+03)*pi2 数字截止频率
bfir1(Nwnpihamming(N+1)) 选择窗函数化截止频率
figure(1)
freqz(b1512)
f2fftfilt(bx2)
显示波形图
figure(2)
subplot(211)plot(tx2)title('滤波前时域波形')
subplot(212)plot(tf2)title('滤波时域波形')
显示频谱图
F0fft(f21024)
ffs*(0511)1024
figure(3)
y2fft(x21024)
subplot(211)plot(fabs(y2(1512)))title('滤波前频谱')xlabel('Hz')ylabel('fuzhi') 画出滤波前频谱图
subplot(212)plot(fabs(F0(1512)))title('滤波频谱')xlabel('Hz')ylabel('fuzhi') 画出滤波频谱图
声音较
chooiseinput('1原始语音2加噪语音3滤波语音')
if(chooise1)
sound(x122050) 播放原始语音
end
if(chooise2)
sound(x222050) 播放加噪语音
end
if(chooise3)
sound(f222050) 播放滤波信号
end
附录二 界面程序
程序摘:
function pushbutton1_Callback(hObject eventdata handles)滤波声音
if handlesbut11
sound(handlessound1 22050)
end
if handlesbut21
sound(handlessound2 22050)
end
if handlesbut31
sound(handlessound3*5 22050)
end
if handlesbut41
sound(handlessound4 22050)
end
if handlesbut51
sound(handlessound5 22050)
end
if handlesbut61
sound(handlessound6 22050)
end
滤波前语音
function pushbutton2_Callback(hObject eventdata handles)
fs8000
[y fs]wavread('io4wav')
sound(y fs)
滤波前信息
function pushbutton3_Callback(hObject eventdata handles)
fs8000
[y fs]wavread('io4wav')
time(1length(y))fs _
set(gcf 'CurrentAxes'handlesaxes1)
plot(time y)
title('时域')
Yfft(y8000)
Amplitudeabs(Y)
set(gcf 'CurrentAxes'handlesaxes2)
plot(Amplitude)
title('频域')
滤波信息
function pushbutton4_Callback(hObject eventdata handles) if handlesbut11
fs22050
Wp1000Ws1200
Rp1Rs100
wc2*fs*tan(2*pi*Wp(2*fs)) 先转化角频率转换模拟域频率
wt2*fs*tan(2*pi*Ws(2*fs))
[Nwn]cheb1ord(wcwt1100's') 模拟域计算阶数固频率
[BA]cheby1(N1wn'low''s') 利面结果设计滤波器
[bzaz]bilinear(BA8000) 双线性变换法数字滤波器原型
[y fs]wavread('io4wav')
xfilter(bzazy)
Xfft(x4096)
set(gcf 'CurrentAxes'handlesaxes3)
plot(x)
title('滤波语音信号波形')
set(gcf 'CurrentAxes'handlesaxes4)
plot(abs(X))
title('滤波语音信号谱')
handlessound1x
guidata(hObject handles)
end
if handlesbut21
fs22050
Wp[1200 3000]4000Ws[1000 3200]4000
Rp1Rs100
[nWn]buttord(WpWsRpRs)
[ba]butter(nWn)
[y fs]wavread('io4wav')
xfilter(bay)
Xfft(x4096)
set(gcf 'CurrentAxes'handlesaxes3)
plot(x)
title('滤波语音信号波形')
set(gcf 'CurrentAxes'handlesaxes4)
plot(abs(X))
title('滤波语音信号谱')
handlessound2x
guidata(hObject handles)
end
if handlesbut31
fs22050
Wp5000Ws4800
Rp1Rs100
wc2*fs*tan(2*pi*Wp(2*fs)) 先转化角频率转换模拟域频率
wt2*fs*tan(2*pi*Ws(2*fs))
[Nwn]cheb1ord(wcwt1100's') 模拟域计算阶数固频率
[BA]cheby1(N1wn'high''s') 利面结果设计滤波器
[bzaz]bilinear(BA22050) 双线性变换法数字滤波器原型
[y fs]wavread('io4wav')
xfilter(bzazy)
Xfft(x)
set(gcf 'CurrentAxes'handlesaxes3)
plot(x)
title('滤波语音信号波形')
set(gcf 'CurrentAxes'handlesaxes4)
plot(abs(X))
title('滤波语音信号谱')
handlessound3x
guidata(hObject handles)
end
if handlesbut41
ywavread('io4wav')
fs1000
fp1200
Fs22050
wsfsFs*2*pi
wpfpFs*2*pi
w1(ws+wp)2
widthwpws
Nceil(128*piwidth)+1
windowkaiser(N10056)
w1w1pi
bfir1(N1w1window)
y1fftfilt(by)
Y1fft(y12048)
set(gcf'CurrentAxes'handlesaxes3)
plot(y1)
title('滤波时域波形')
set(gcf'CurrentAxes'handlesaxes4)
plot(abs(Y1))
title('滤波频域波形')
handlessound4y1
guidata(hObject handles)
end
if handlesbut61
Fs22050
[yFs]wavread('io4wav')
fs5000
fp4800
Fs22050
wsfsFs*2*pi
wpfpFs*2*pi
w1(ws+wp)2 理想高通滤波器中心频率
widthwswp
Nceil(128*piwidth)+1
windowkaiser(N10056)windowkaiser(Nhandlesbeta)
w1w1pi
bfir1(N1w1'high'window)
y1fftfilt(by)
Y1fft(y12048)
set(gcf'CurrentAxes'handlesaxes3)
plot(y1)
title('滤波时域波形')
set(gcf'CurrentAxes'handlesaxes4)
plot(abs(Y1))
title('滤波频域波形')
handlessound6y1
guidata(hObject handles)
end
if handlesbut51
通FIR带通滤波器
输入带通滤波器通带截止频率fp1fp2阻带截止频率fs1fs2beta值
Fs22050
fs1000
fp1200
fp23000
fs23200
[yFs]wavread('io4wav')
ws1fsFs*2*pi
wp1fpFs*2*pi
wp2fp2Fs*2*pi
ws2fs2Fs*2*pi
w1(ws1+wp1)2
w2(wp2+ws2)2 理想带通滤波器截止频率
width min((wp1ws1)(ws2wp2))渡带宽
Nceil(128*piwidth)+1
windowkaiser(N10056)
w1w1piw2w2pi
bfir1(N1[w1 w2]'bandpass'window)
y1fftfilt(by)
Y1fft(y12048)
set(gcf'CurrentAxes'handlesaxes3)
plot(y1)滤波波形
title('滤波时域波形')
set(gcf'CurrentAxes'handlesaxes4)
plot(abs(Y1))滤波频谱
title('滤波频域波形')
handlessound5y1
guidata(hObject handles)
end
function radiobutton5_Callback(hObject eventdata handles)
FIR低通¨
handlesbut4get(hObject'value')
handlesbut10
handlesbut20
handlesbut30
handlesbut50
handlesbut60
guidata(hObject handles)
ywavread('io4wav')
fs1000
fp1200
Fs22050
wsfsFs*2*pi
wpfpFs*2*pi
w1(ws+wp)2
widthwpws
Nceil(128*piwidth)+1
windowkaiser(N10056)
w1w1pi
bfir1(N1w1window)
y1fftfilt(by)
Y1fft(y12048)
set(gcf'CurrentAxes'handlesaxes1)
plot(y1)
axis([0800030010])
grid
xlabel('频率Hz')
ylabel('幅度dB')
Executes on button press in radiobutton5
function radiobutton2_Callback(hObject eventdata handles)
handlesbut1get(hObject'value')
handlesbut20
handlesbut30
handlesbut40
handlesbut50
handlesbut60
guidata(hObject handles)
fs8000
Wp1000Ws1200
Rp1Rs100
wc2*fs*tan(2*pi*Wp(2*fs)) 先转化角频率转换模拟域频率
wt2*fs*tan(2*pi*Ws(2*fs))
[Nwn]cheb1ord(wcwt1100's') 模拟域计算阶数固频率
[BA]cheby1(N1wn'low''s') 利面结果设计滤波器
[numden]bilinear(BA8000) 双线性变换法数字滤波器原型
[hw]freqz(numden) 求幅频响应
set(gcf 'CurrentAxes'handlesaxes1)
fwpi*4000 角频率转化Hz500采样频率半
plot(f20*log10(abs(h))) 幅频响应表示成分贝画出图形
axis([0500030010])
grid
xlabel('频率Hz')
ylabel('幅度dB')
hObject handle to radiobutton2 (see GCBO)
eventdata reserved to be defined in a future version of MATLAB
handles structure with handles and user data (see GUIDATA)
Hint get(hObject'Value') returns toggle state of radiobutton2
Executes on button press in radiobutton3
function radiobutton3_Callback(hObject eventdata handles)
handlesbut2get(hObject'value')
handlesbut10
handlesbut30
handlesbut40
handlesbut50
handlesbut60
guidata(hObject handles)
Wp[1200 3000]4000Ws[1000 3200]4000
Rp1Rs100
[nWn]buttord(WpWsRpRs)
[ba]butter(nWn)
[h w]freqz(ba)
set(gcf 'CurrentAxes'handlesaxes1)
fwpi*4000
plot(f20*log10(abs(h))) 幅频响应表示成分贝画出图形
grid
axis([0500050010])
function radiobutton4_Callback(hObject eventdata handles)
handlesbut3get(hObject'value')
handlesbut10
handlesbut20
handlesbut40
handlesbut50
handlesbut60
guidata(hObject handles)
fs22050
Wp5000Ws4800
Rp1Rs100
wc2*fs*tan(2*pi*Wp(2*fs)) 先转化角频率转换模拟域频率
wt2*fs*tan(2*pi*Ws(2*fs))
[Nwn]cheb1ord(wcwt1100's') 模拟域计算阶数固频率
[BA]cheby1(N1wn'high''s') 利面结果设计滤波器
[numden]bilinear(BA22050) 双线性变换法数字滤波器原型
[hw]freqz(numden) 求幅频响应
set(gcf 'CurrentAxes'handlesaxes1)
fwpi*11025 角频率转化Hz500采样频率半
plot(f20*log10(abs(h))) 幅频响应表示成分贝画出图形
axis([0800030010])
grid
xlabel('频率Hz')
ylabel('幅度dB')
function radiobutton6_Callback(hObject eventdata handles)
通FIR带通滤波器
输入带通滤波器通带截止频率fp1fp2阻带截止频率fs1fs2beta值
handlesbut5get(hObject'value')
handlesbut10
handlesbut20
handlesbut40
handlesbut60
handlesbut30
guidata(hObject handles)
Fs22050
fs1000
fp1200
fp23000
fs23200
[yFs]wavread('io4wav')
ws1fsFs*2*pi
wp1fpFs*2*pi
wp2fp2Fs*2*pi
ws2fs2Fs*2*pi
w1(ws1+wp1)2
w2(wp2+ws2)2 理想带通滤波器截止频率
width min((wp1ws1)(ws2wp2))渡带宽
Nceil(128*piwidth)+1
windowkaiser(N10056)
w1w1piw2w2pi
bfir1(N1[w1 w2]'bandpass'window)
y1fftfilt(by)
Y1fft(y12048)
set(gcf'CurrentAxes'handlesaxes1)
plot(y1)
axis([0800030010])
grid
xlabel('频率Hz')
ylabel('幅度dB')
高通FIR滤波器
function radiobutton7_Callback(hObject eventdata handles)
handlesbut6get(hObject'value')
handlesbut10
handlesbut20
handlesbut40
handlesbut30
handlesbut50
guidata(hObject handles)
Fs20000
[yFs]wavread('io4wav')
fs5000
fp4800
Fs22050
wsfsFs*2*pi
wpfpFs*2*pi
w1(ws+wp)2 理想高通滤波器中心频率
widthwswp
Nceil(128*piwidth)+1
windowkaiser(N10056)windowkaiser(Nhandlesbeta)
w1w1pi
bfir1(N1w1'high'window)
y1fftfilt(by)
Y1fft(y12048)
set(gcf'CurrentAxes'handlesaxes1)
plot(y1)
axis([0800030010])
grid
xlabel('频率Hz')
ylabel('幅度dB')
参考文献:
1 赵红怡 张常年编著 数字信号处理MATLAB实现 北京:化学工业出版社 2002年1月
2 程佩青编著 数字信号处理教程(第二版) 北京清华学出版社 2005年6月
3 钱惠编 数字信号处理 北京: 机械工业出版社 2005年2月
4 王宏编著 MATLAB65信号处理中应 北京:清华学出版社
2005年3月
5 闻新 周露 张鸿编著 MATLAB科学图形构建基础应 北京:科学出版社
2002年6月
6 苏晓生编著 北京:科学出版社 2002年
7 陈亚勇等编著 MATLAB信号处理详解 北京:民邮电出版社 2001年9月
8 楼天 李博菡编著 基MATLAB系统分析设计——信号处理 西安:西安电子科技学出版社 2001年9月
9 张威编著 MATLAB基础编程入门 西安:西安电子科技学出版社 2005年1月
10闻新等编著 MATLAB模糊逻辑工具箱分析应 北京:科学出版社 2001
11孙洪等译 数字信号处理实验指导书(MATLAB版)北京:电子工业出版社 2005年1月
12卢光跃等编著 数字信号处理 北京:北京邮电学出版社 2003
广xi工学院
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档