数字信号处理matlab课程设计.docx
- 文档编号:29246833
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:30
- 大小:283.16KB
数字信号处理matlab课程设计.docx
《数字信号处理matlab课程设计.docx》由会员分享,可在线阅读,更多相关《数字信号处理matlab课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
数字信号处理matlab课程设计
课题一数字信号处理系统设计
一、项目要求
用本课程所学的数字信号处理理论知识,设计一个具有信号的采集、处理、传输、显示和存储等功能的系统,内容如下:
1、录制一段语音信号,并对录制的语音信号进行采样(采样频率可取fs=22050Hz);
2、画出采样后的语音信号的时域波形和频谱图;
3、滤波器的性能指标:
低通滤波器:
通带边界频率fp=1kHz,通带最大衰减Ap=1dB;
阻带边界频率fp=1.2kHz,阻带最小衰减Ap=100dB;
高通滤波器:
通带边界频率fp=5kHz,通带最大衰减Ap=1dB;
阻带边界频率fp=4.8kHz,阻带最小衰减Ap=100dB;
带通滤波器:
通带上限截止频率fp2=3kHz,通带下限截止频率fp1=1.2kHz;
阻带上限截止频率fs2=3.2kHz,通带下限截止频率fp1=1kHz;
通带最大衰减Ap=1dB,阻带最小衰减As=100dB;
采用双线性变换法设计滤波器,并画出滤波器的频率响应;
4、用自己设计的滤波器对采样的信号进行滤波,画出滤波后信号的时域波形和频谱图,并对滤波前后的信号进行对比,分析信号的变化;
5、回放语音
6、用GUI设计一个信号系统的用户界面。
二、实验所要用到的MATLAB函数
1、语音信号的采样与播放
wavread();
[y,fs,bite]=wavread();%语音信号的采样
sound(y,fs,bite);%播放语音
2.滤波器:
IIR:
butte();%巴特沃思滤波器
cheby1();%切比雪夫I滤波器
elliptical();%椭圆滤波器
3.频率响应:
[h,f]=freqz(b,a,n,fs)
freqz(b,a,n,fs)
5.快速傅里叶变换
fft(x,n)
6.画曲线
plot(x,y)
stem(x,y)
7.在MATLAB中,设计辅助低通原型巴特沃思和切比雪夫滤波器的阶数和截止频率;
1)利用buttord和cheblord确定阶数;
2)[num,den]=butter(N,Wn),[num,den]=cheby1(N,Wn)
3)lp2hp,lp2bp,lp2bs可以完成低通滤波器到高通,带通,带阻的转换
4)使用biliner对模拟滤波器进行双线性变换,求得数字滤波器的传输函数系数
三、数字滤波器(代码)
1.IIR低通滤波器
fp=1000;
ft=5500;
fs=1200;
wp=2*pi*fp/ft;
ws=2*pi*fs/ft;
Fp=2*ft*tan(wp/2);
Fs=2*ft*tan(ws/2);
[n,Omgc]=buttord(Fp,Fs,1,100,'s');
[z,p,k]=buttap(n);
B=k*real(poly(z));
A=real(poly(p));
[b1,a1]=lp2lp(B,A,Omgc);
[ba1,aa1]=bilinear(b1,a1,ft);%模拟转数字
[Ha,w]=freqz(ba1,aa1);%求频率相应
plot(w*ft/(2*pi),20*log10(abs(Ha)));
title('IIR低通滤波器');
xlabel('频率/HZ');
ylabel('幅值');
2.IIR高通滤波器
fp=5000;
ft=25000;%取抽样频率
fs=4800;
Rp=1;As=100;
wp=2*pi*fp/ft;%通带频率
ws=2*pi*fs/ft;%截止频率
Fp=2*ft*tan(wp/2);
Fs=2*ft*tan(ws/2);
[n,Omgc]=ellipord(Fp,Fs,Rp,As,'s');%计算阶数n和截止频率
[z,p,k]=ellipap(n,Rp,As);
B3=k*real(poly(z));
A3=real(poly(p));
[b3,a3]=lp2hp(B3,A3,Omgc);
[ba3,aa3]=bilinear(b3,a3,ft);
[Ha,w]=freqz(ba3,aa3);
plot(w*ft/(2*pi),20*log10(abs(Ha)));
title('IIR高通滤波器');
xlabel('频率/HZ');
ylabel('幅值');
3.IIR带通滤波器
fp1=1200;fp2=3000;fs1=1000;fs2=3200;ft=10000;
As=100;Rp=1;
wp1=2*pi*fp1/ft;
wp2=2*pi*fp2/ft;
ws1=2*pi*fs1/ft;
ws2=2*pi*fs2/ft;
Fp1=2*ft*tan(wp1/2);
Fp2=2*ft*tan(wp2/2);
Fp=[Fp1,Fp2];
Fs1=2*ft*tan(ws1/2);
Fs2=2*ft*tan(ws2/2);
Fs=[Fs1,Fs2];
bw=Fp2-Fp1;w0=sqrt(Fp1*Fp2);%通带宽和中心频率
[n,Omgn]=cheb1ord(Fp,Fs,Rp,As,'s');
[z,p,k]=cheb1ap(n,Rp);
B2=k*real(poly(z));
A2=real(poly(p));
[b2,a2]=lp2bp(B2,A2,w0,bw);
[ba2,aa2]=bilinear(b2,a2,ft);
[Ha,w]=freqz(ba2,aa2);
plot(w*ft/(2*pi),20*log10(abs(Ha)));
title('IIR带通滤波器');
xlabel('频率/HZ');
ylabel('幅值');
四、总代码
functionvarargout=bzh(varargin)
%BZHM-fileforbzh.fig
%BZH,byitself,createsanewBZHorraisestheexisting
%singleton*.
%
%H=BZHreturnsthehandletoanewBZHorthehandleto
%theexistingsingleton*.
%
%BZH('CALLBACK',hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinBZH.Mwiththegiveninputarguments.
%
%BZH('Property','Value',...)createsanewBZHorraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforeko_OpeningFunctiongetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtobzh_OpeningFcnviavarargin.
%
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone
%instancetorun(singleton)".
%
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Copyright2021-2021TheMathWorks,Inc.
%Edittheabovetexttomodifytheresponsetohelpbzh
%LastModifiedbyGUIDEv2.509-Jan-202108:
54:
22
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@bzh_OpeningFcn,...
'gui_OutputFcn',@bzh_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
%Endinitializationcode-DONOTEDIT
%---Executesjustbeforebzhismadevisible.
functionbzh_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%varargincommandlineargumentstobzh(seeVARARGIN)
%Choosedefaultcommandlineoutputforbzh
handles.output=hObject;
%Updatehandlesstructure
guidata(hObject,handles);
%UIWAITmakesbzhwaitforuserresponse(seeUIRESUME)
%uiwait(handles.figure1);
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=bzh_OutputFcn(hObject,eventdata,handles)
%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%Getdefaultcommandlineoutputfromhandlesstructure
varargout{1}=handles.output;
%---Executesonbuttonpressintag_start.
functiontag_start_Callback(hObject,eventdata,handles)
%hObjecthandletotag_start(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
axes(handles.axes1)
cla;
globalz0;
globalyy;
fs=22050;
nbits=32;
[yy,fs,nbits]=wavread('D:
\f.wav');%语音信号加载
sound(yy,fs);%回放语音
z0=yy;
axes(handles.axes1);
plot(yy);
title('时域采样信号波形');
gridon
n=length(yy);%求出语音信号的长度
Y=fft(yy,n);%傅里叶变换
axes(handles.axes2);
plot(20*log10(abs(Y)));
title('时域采样信号频谱');
guidata(hObject,handles);
gridon
%---Executesonbuttonpressintag_ditong.
functiontag_ditong_Callback(hObject,eventdata,handles)
%hObjecthandletotag_ditong(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
axes(handles.axes1)
cla;
globalz1;
globalyy;
globalba1;
globalaa1;
globalFp;
globalFs;
fp=1000;
ft=5500;
fs=1200;
wp=2*pi*fp/ft;
ws=2*pi*fs/ft;
Fp=2*ft*tan(wp/2);
Fs=2*ft*tan(ws/2);
[n,Omgc]=buttord(Fp,Fs,1,100,'s');
[z,p,k]=buttap(n);
B=k*real(poly(z));
A=real(poly(p));
[b1,a1]=lp2lp(B,A,Omgc);
[ba1,aa1]=bilinear(b1,a1,ft);%模拟转数字
z1=filter(ba1,aa1,yy);
[Ha,w]=freqz(ba1,aa1);%求频率相应
plot(w*ft/(2*pi),20*log10(abs(Ha)));
title('IIR低通滤波器');
xlabel('频率/HZ');
ylabel('幅值');
%---Executesonbuttonpressintag_gaotong.
functiontag_gaotong_Callback(hObject,eventdata,handles)
%hObjecthandletotag_gaotong(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
axes(handles.axes2)
cla;
globalyy;
globalz2;
globalB3;
globalba3;
globalaa3;
globalFp;
globalFs;
fp=5000;
ft=25000;%取抽样频率
fs=4800;
Rp=1;As=100;
wp=2*pi*fp/ft;%通带频率
ws=2*pi*fs/ft;%截止频率
Fp=2*ft*tan(wp/2);
Fs=2*ft*tan(ws/2);
[n,Omgc]=ellipord(Fp,Fs,Rp,As,'s');%计算阶数n和截止频率
[z,p,k]=ellipap(n,Rp,As);
B3=k*real(poly(z));
A3=real(poly(p));
[b3,a3]=lp2hp(B3,A3,Omgc);
[ba3,aa3]=bilinear(b3,a3,ft);
z2=filter(ba3,aa3,yy);
[Ha,w]=freqz(ba3,aa3);
plot(w*ft/(2*pi),20*log10(abs(Ha)));
title('IIR高通滤波器');
xlabel('频率/HZ');
ylabel('幅值');
%---Executesonbuttonpressintag_daitong.
functiontag_daitong_Callback(hObject,eventdata,handles)
%hObjecthandletotag_daitong(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
axes(handles.axes3)
cla;
globalyy;
globalz3;
globalB2;
globalba2;
globalaa2;
fp1=1200;fp2=3000;fs1=1000;fs2=3200;ft=10000;
As=100;Rp=1;
wp1=2*pi*fp1/ft;
wp2=2*pi*fp2/ft;
ws1=2*pi*fs1/ft;
ws2=2*pi*fs2/ft;
Fp1=2*ft*tan(wp1/2);
Fp2=2*ft*tan(wp2/2);
Fp=[Fp1,Fp2];
Fs1=2*ft*tan(ws1/2);
Fs2=2*ft*tan(ws2/2);
Fs=[Fs1,Fs2];
bw=Fp2-Fp1;w0=sqrt(Fp1*Fp2);%通带宽和中心频率
[n,Omgn]=cheb1ord(Fp,Fs,Rp,As,'s');
[z,p,k]=cheb1ap(n,Rp);
B2=k*real(poly(z));
A2=real(poly(p));
[b2,a2]=lp2bp(B2,A2,w0,bw);
[ba2,aa2]=bilinear(b2,a2,ft);
z3=filter(ba2,aa2,yy);
[Ha,w]=freqz(ba2,aa2);
plot(w*ft/(2*pi),20*log10(abs(Ha)));
title('IIR带通滤波器');
xlabel('频率/HZ');
ylabel('幅值');
%---Executesonbuttonpressintag_dibo.
functiontag_dibo_Callback(hObject,eventdata,handles)
%hObjecthandletotag_dibo(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
axes(handles.axes3)
cla;
globalyy;
globalz1;
globalba1;
globalaa1;
m4=fft(z1);
plot(z1,'y');
title('IIR滤波后的信号波形');
xlabel('时间/t');
ylabel('幅值');
axes(handles.axes4)
cla;
plot(abs(m4),'y');
title('IIR滤波后信号频谱');
xlabel('频率/HZ');
ylabel('幅值');
%---Executesonbuttonpressintag_gaobo.
functiontag_gaobo_Callback(hObject,eventdata,handles)
%hObjecthandletotag_gaobo(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
axes(handles.axes3)
cla;
globalyy;
globalz2;
globalB3;
globalba3;
globalaa3;
m5=fft(z2);
plot(z2,'y');
title('IIR滤波后的信号波形');
xlabel('时间/t');
ylabel('幅值');
axes(handles.axes4)
cla;
plot(abs(m5),'y');
title('IIR滤波后信号频谱');
xlabel('频率/HZ');
ylabel('幅值');
%---Executesonbuttonpressintag_daibo.
functiontag_daibo_Callback(hObject,eventdata,handles)
%hObjecthandletotag_daibo(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
axes(handles.axes3)
cla;
globalyy;
globalz3;
globalB2;
globalba2;
globalaa2;
m6=fft(z3);
plot(z3,'y');
title('IIR滤波后的信号波形');
xlabel('时间/t');
ylabel('幅值');
axes(handles.axes4)
cla;
plot(abs(m6),'y');
title('IIR滤波后信号频谱');
xlabel('频率/HZ');
ylabel('幅
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 matlab 课程设计