




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB的综合实验一、实验目的及要求培养学生利用Matlab解决专业问题的能力。二、实验设备(环境)及要求1 计算机2 Matlab软件编程实验平台三、实验内容1、编程实现一个数字信号处理的仿真系统 。要求具有界面并实现以下功能: 1)能产生(得到)并选择各种数字信号(sin、方波、三角波、语音、噪声及其叠加); 2)具有DFT、DCT和DWT变换功能,并对各种信号进行变换; 3)设计滤波器实现低通、高通、带通滤波,得到输出信号的频域特性和时间序列; 4)输入一段叠加了噪声的语音信号,显示其频谱特性,通过变换或滤波对其降噪,得到输出信号的频域特性和时间序列。四、设计思想本系统包含有三个主要部分:信号产生与变换模块,滤波器模块和语音噪声处理。信号产生与变换通过输入信号频率和采样频率实现正弦、方波、三角波、语音信号的产生以及噪声的叠加,系统设定信号持续时间为0.05s,语音信号为截取了一段2s的声音信号。同时对各个信号进行DFT,DCT和DWT变换,且变换点数N=256,同时设定DWT变换时的小波类型为db1。滤波器模块设计了四个IIR滤波器(巴特沃斯、切比雪夫型,切比雪夫型和椭圆滤波器),并分别实现低通,高通和带通。界面设计了各种滤波器所需参数的输入模块。系统设定待滤波信号持续时间为0.05s,包含有3个频率成分,S=sin(2*pi*f*t)+ sin(2*pi*5*f*t)+ sin(2*pi*8*f*t),其中f为输入信号频率,S通过低通、带通、高通滤波器之后,分别得到频率为f,5f和8f的正弦信号,实现信号滤波。语音噪声处理部分是一个复选框按钮,通过巴特沃斯低通滤波器对其进行降噪,设计中通过观察噪声语音信号的频谱得到低通滤波器的截止频率和阻带起始频率,并合理输入通带衰减与阻带衰减,最终得到理想的降噪结果。数字滤波器设计过程中用到了如下的一些matlab设计函数:buttord、butter,cheb1ord、cheby1,cheb2ord、cheby2,ellipord、ellip。五、程序代码(界面除外)及注释function varargout = zuoye(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, zuoye_OpeningFcn, . gui_OutputFcn, zuoye_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction zuoye_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout = zuoye_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output;function edit1_show_Callback(hObject, eventdata, handles)function edit1_show_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction edit2_show_Callback(hObject, eventdata, handles)function edit2_show_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction noise_radiobutton_Callback(hObject, eventdata, handles)%-信号产生部分-function signal_popupmenu_Callback(hObject, eventdata, handles)val=get(hObject,value);global f;global fs;global sin_1;global noise_sin;global square_1;global noise_square;global sawtooth_1;global noise_sawtooth;global sound_1;global noise_sound;global n;n=0:1/fs:0.05; %设定信号持续时间为0.05sswitch val case 1 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max) set(handles.edit2_show,string,叠加噪声的正弦波,FontSize,12); y=sin(2*pi*f*n); noise_sin=y+rand(size(n); axes(handles.axes2); plot(n,noise_sin,linewidth,1.5); xlabel(t/s); grid on; else set(handles.edit1_show,string,正弦波波形,FontSize,12); sin_1=sin(2*pi*f*n); axes(handles.axes1); plot(n,sin_1,linewidth,2); xlabel(t/s); grid on; end case 2 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max)set(handles.edit2_show,string,叠加噪声的方波,FontSize,12); y=square(2*pi*f*n,50); noise_square=y+rand(size(n); axes(handles.axes2); plot(n,noise_square,linewidth,1.5); xlabel(t/s); grid on; else set(handles.edit1_show,string,方波波形,FontSize,12); square_1=square(2*pi*f*n,50); axes(handles.axes1); plot(n,square_1,linewidth,2); xlabel(t/s); set(handles.axes1,Ylim,-1.5,1.5); grid on; end case 3 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max) set(handles.edit2_show,string,叠加噪声的三角波,FontSize,12); y=sawtooth(2*pi*f*n); noise_sawtooth=y+rand(size(n); axes(handles.axes2); plot(n,noise_sawtooth,linewidth,1.5); xlabel(t/s); grid on; elseset(handles.edit1_show,string,三角波波形,FontSize,12); sawtooth_1=sawtooth(2*pi*f*n); axes(handles.axes1); plot(n,sawtooth_1,linewidth,2); xlabel(t/s); grid on; end case 4 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max) set(handles.edit2_show,string,叠加噪声的语音信号,FontSize,12); y,fs1,bit=wavread(vo.wav); y1=y(:,1); %单声道处理 noise_sound=y1+rand(length(y1),1); sound(noise_sound,fs1,bit); axes(handles.axes2); N1=length(y1); ts=(0:N1-1)/fs1; plot(ts,noise_sound); xlabel(t/s); grid on; else set(handles.edit1_show,string,语音信号,FontSize,12); y,fs1,bit=wavread(vo.wav); sound_1=y(:,1); %单声道处理 sound(sound_1,fs1,bit); axes(handles.axes1); N1=length(sound_1); ts=(0:N1-1)/fs1; plot(ts,sound_1); xlabel(t/s); grid on; endendfunction signal_popupmenu_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end%-信号变换-function transform_popupmenu_Callback(hObject, eventdata, handles)global sin_1;global noise_sin;global square_1;global noise_square;global sawtooth_1;global noise_sawtooth;global sound_1;global noise_sound;global n;global fs;global N;N=256; %DFT,DCT变换的点数k1=(1:N).*fs/N;val=get(hObject,value);val_signal=get(handles.signal_popupmenu,value);switch val_signal case 1 switch val case 1 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max)set(handles.edit1_show,string,叠加噪声的正弦信号DFT,FontSize,12); if Nlength(noise_sin) n=0:N-1; noise_sin=noise_sin,zeros(1,N-length(noise_sin); end k=0:N-1; WN=exp(-j*2*pi/N); nk=n*k; WNnk=WN.nk; Xk=noise_sin*WNnk; axes(handles.axes1); stem(k1,abs(Xk);xlabel(f/Hz); grid on; else set(handles.edit2_show,string,正弦信号的DFT,FontSize,12); if Nlength(sin_1) n=0:N-1; sin_1=sin_1,zeros(1,N-length(sin_1); end k=0:N-1; WN=exp(-j*2*pi/N); nk=n*k; WNnk=WN.nk; Xk=sin_1*WNnk; axes(handles.axes2); stem(k1,abs(Xk);xlabel(f/Hz); grid on; end case 2 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max)set(handles.edit1_show,string,叠加噪声的正弦信号DCT,FontSize,12); Xk=dct(noise_sin); axes(handles.axes1); stem(abs(Xk); grid on; else set(handles.edit2_show,string,正弦信号的DCT,FontSize,12); Xk=dct(sin_1); axes(handles.axes2); stem(abs(Xk); grid on; end case 3 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max) set(handles.edit1_show,string,叠加噪声正弦信号的DWT,FontSize,12); Xk1,Xk2=dwt(noise_sin,db1); axes(handles.axes1); plot(Xk1,-r,linewidth,2); hold on; grid on; plot(Xk2,linewidth,2); legend(近似分量,细节分量); hold off else set(handles.edit2_show,string,正弦信号的DWT,FontSize,12); Xk1,Xk2=dwt(sin_1,db1); axes(handles.axes2); plot(Xk1,-r,linewidth,2); grid on; hold on; plot(Xk2,linewidth,2); legend(近似分量,细节分量); hold off end end case 2 switch val case 1 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max) set(handles.edit1_show,string,叠加噪声的方波信号DFT,FontSize,12); if Nlength(noise_square) n=0:N-1; noise_square=noise_square,zeros(1,N-length(noise_square); end k=0:N-1; WN=exp(-j*2*pi/N); nk=n*k; WNnk=WN.nk; Xk=noise_square*WNnk; axes(handles.axes1); stem(k1,abs(Xk); xlabel(f/Hz); grid on; else set(handles.edit2_show,string,方波信号的DFT,FontSize,12); if Nlength(square_1) n=0:N-1; square_1=square_1,zeros(1,N-length(square_1); end k=0:N-1; WN=exp(-j*2*pi/N); nk=n*k; WNnk=WN.nk; Xk=square_1*WNnk; axes(handles.axes2); stem(k1,abs(Xk);xlabel(f/Hz); grid on; end case 2 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max) set(handles.edit1_show,string,叠加噪声的方波信号DCT,FontSize,12); Xk=dct(noise_square); axes(handles.axes1); stem(abs(Xk); grid on; elseset(handles.edit2_show,string,方波信号的DCT,FontSize,12); Xk=dct(square_1); axes(handles.axes2); stem(abs(Xk); grid on; end case 3 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max)set(handles.edit1_show,string,叠加噪声的方波信号DWT,FontSize,12); Xk1,Xk2=dwt(noise_square,db1); axes(handles.axes1); plot(Xk1,-r,linewidth,2); hold on; grid on; plot(Xk2,linewidth,2); legend(近似分量,细节分量); hold off else set(handles.edit2_show,string,方波信号的DWT,FontSize,12); Xk1,Xk2=dwt(square_1,db1); axes(handles.axes2); plot(Xk1,-r,linewidth,2); grid on; hold on; plot(Xk2,linewidth,2); legend(近似分量,细节分量); hold off end end case 3 switch val case 1 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max) set(handles.edit1_show,string,叠加噪声的三角波DFT,FontSize,12); if Nlength(noise_sawtooth) n=0:N-1; noise_sawtooth=noise_sawtooth,zeros(1,N-length(noise_sawtooth); end k=0:N-1; WN=exp(-j*2*pi/N); nk=n*k; WNnk=WN.nk; Xk=noise_sawtooth*WNnk; axes(handles.axes1); stem(k1,abs(Xk);xlabel(f/Hz); grid on; else set(handles.edit2_show,string,三角波信号的DFT,FontSize,12); if Nlength(sawtooth_1) n=0:N-1; sawtooth_1=sawtooth_1,zeros(1,N-length(sawtooth_1); end k=0:N-1; WN=exp(-j*2*pi/N); nk=n*k; WNnk=WN.nk; Xk=sawtooth_1*WNnk; axes(handles.axes2); stem(k1,abs(Xk);xlabel(f/Hz); grid on; end case 2 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max) set(handles.edit1_show,string,叠加噪声的三角波DCT,FontSize,12); Xk=dct(noise_sawtooth); axes(handles.axes1); stem(abs(Xk); grid on; elseset(handles.edit2_show,string,三角波信号的DCT,FontSize,12); Xk=dct(sawtooth_1); axes(handles.axes2); stem(abs(Xk); grid on; end case 3 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max) set(handles.edit1_show,string,叠加噪声的三角波DWT,FontSize,12); Xk1,Xk2=dwt(noise_sawtooth,db1); axes(handles.axes1); plot(Xk1,-r,linewidth,2); hold on; grid on; plot(Xk2,linewidth,2); legend(近似分量,细节分量); hold off else set(handles.edit2_show,string,三角波信号的DWT,FontSize,12); Xk1,Xk2=dwt(sawtooth_1,db1); axes(handles.axes2); plot(Xk1,-r,linewidth,2); grid on; hold on; plot(Xk2,linewidth,2); legend(近似分量,细节分量); hold off end end case 4 switch val case 1 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max)set(handles.edit1_show,string,叠加噪声的语音信号DFT,FontSize,12); Xk=fft(noise_sound,N); axes(handles.axes1); stem(0:N-1,abs(Xk); set(handles.axes1,Xlim,0,N); grid on; else set(handles.edit2_show,string,语音信号的DFT,FontSize,12); Xk=fft(sound_1,N); axes(handles.axes2); stem(0:N-1,abs(Xk); set(handles.axes2,Xlim,0,N); grid on; end case 2 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max) set(handles.edit1_show,string,叠加噪声的语音信号DCT,FontSize,12); Xk=dct(noise_sound,N); axes(handles.axes1); stem(0:N-1,abs(Xk); set(handles.axes1,Xlim,0,N); grid on; else set(handles.edit2_show,string,语音信号的DCT,FontSize,12); Xk=dct(sound_1,N); axes(handles.axes2); stem(0:N-1,abs(Xk); set(handles.axes2,Xlim,0,N); grid on; end case 3 if get(handles.noise_radiobutton,value)=get(handles.noise_radiobutton,max) set(handles.edit1_show,string,叠加噪声的语音信号DWT,FontSize,12); Xk1,Xk2=dwt(noise_sound,db1); axes(handles.axes1); plot(Xk1,-r,linewidth,2); hold on; grid on; plot(Xk2,linewidth,2); set(handles.axes1,Xlim,0,length(sound_1)/2); legend(近似分量,细节分量); hold off else set(handles.edit2_show,string,语音信号的DWT,FontSize,12); Xk1,Xk2=dwt(sound_1,db1); axes(handles.axes2); plot(Xk1,-r,linewidth,2); grid on; hold on; plot(Xk2,linewidth,2); legend(近似分量,细节分量); set(handles.axes2,Xlim,0,length(sound_1)/2); hold off end endendfunction transform_popupmenu_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction frequency_edit_Callback(hObject, eventdata, handles)global f;f=str2double(get(hObject,string);if isnan(f) %判定输入数据中是否有非数字,若有,则重新输入 errordlg(Enter a numeric value,Bud Input) returnendfunction frequency_edit_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction sample_edit_Callback(hObject, eventdata, handles)global fs;fs=str2double(get(hObject,string);if isnan(fs) errordlg(Enter a numeric value,Bud Input) returnendfunction sample_edit_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end fun
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店预订与旅游管理中介创新创业项目商业计划书
- 自然语言处理在智能法律文档审查中的应用创新创业项目商业计划书
- 虚拟现实文化遗产保护创新创业项目商业计划书
- 智能化城市安防监控创新创业项目商业计划书
- 游戏主播培训学院创新创业项目商业计划书
- 动物源性食品创新营销研究创新创业项目商业计划书
- 智能车辆自动驾驶技术创新创业项目商业计划书
- 游戏直播内容创新大赛创新创业项目商业计划书
- 2025年环境影响评价公众参与中的公众教育与实践指南
- 2025年消费与零售行业消费者信任度调查报告001
- 安全生产风险分级管控与隐患排查治理双重体系工作
- EPC工程总承包招标
- 劳务施工组织方案 劳务施工组织设计(八篇)
- 抗菌药物合理使用培训测试题(答案)
- 青藏铁路公司普速铁路维修管理办法
- 《卷烟原料配方设计》配套教学课件
- 消防技术装备培训课件
- 《新能源汽车驱动电机系统检测与维修习题册》 习题参考答案(劳动)
- 介入诊疗质量安全计划与指标
- 99S203 消防水泵接合器安装图集
- 苗圃规章制度范本
评论
0/150
提交评论