版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于MATLAB的GUI设计摘要:随着科学技术的日渐发展,语音识别技术广泛应用在我们身边,如人工合成语音、识别内容或辨别讲话者,但普遍面临噪声给信号带来干扰的问题。基于上述,本设计主要以研究语音信号的采集、加噪、滤波为研究方向,设计一款在MATLAB软件上的语音信号采集及分析的GUI界面仿真系统。预先录制一段声音,以.wav导入系统,采集语音信号后做傅里叶变换、加入随机噪声、采用巴特沃斯低通滤波器滤波加噪信号,分别得到对应的时域、频域图。通过测试和分析对比,并调用函数实现编程代码,最终实现系统的仿真界面,并播放原始声音。本设计的优点在于GUI以窗口、弹出框、按键、动态文本框等具较强的演示性、可视性的界面形式构成,对语音信号采集与分析的研究具有十分重要的参考意义。关键词:语音信号,MATLAB,采集分析,GUIGUIdesignbasedonMATLABAbstract:Withinprovementsinscienceandtechnology,speechrecognitiontechnologyiswidelyusedaroundus,suchasartificiallysynthesizingspeech,recognizingcontentordistinguishingspeakers,butgenerallyfacestheproblemofnoisecausinginterferencetothesignal.Basedontheabove,thisdesignmainlyfocusesontheacquisition,noiseandfilteringofvoicesignals,anddesignsaGUIinterfacesimulationsystembasedontheacquisitionandanalysisofvoicesignalsonMATLABsoftware.Apre-recordedsoundisimportedintothesystemwith.Wav,andafterthevoicesignaliscollected,Fouriertransformisperformed,randomnoiseisadded,andthenoisesignalisfilteredwithbatworthlow-passfilter,andcorrespondingtime-domainandfrequency-domaingraphsareobtainedrespectively.Throughtestingandanalysisandcomparison,andcallingthefunctiontorealizetheprogrammingcode,thesimulationinterfaceofthesystemisfinallyrealized,andtheoriginalsoundisplayed.TheadvantagesofthisdesignarethattheGUIiscomposedofWindows,pop-upboxes,buttons,dynamictextboxesandotherinterfaceformswithstrongdemonstrationandvisibility.Keywords:voicesignal,MATLAB,acquisitionandanalysis,GUI目录TOC\o"2-3"\h\z\u\t"标题1,1"第1章绪论 第2章系统的设计及原理2.1系统设计的原理流程系统的设计是基于在Matlab的平台上,借助于其软件的相关功能来进行。首先利用手机端的录音功能,进行原始语音信号的获取,获取之后我们进行其时频的分析,分析之后我们对原始信号进行加噪处理,在此基础上,对信号进行时域和频域的分析;并设计一个滤波器对加噪信号进行滤波处理,滤波处理之后再分析其时频特性,我们对这三次的时频分析进行一个对比,以达到恢复到原始声音的效果。针对上述,设计的具体原理流程如图2-1所示。图2-1设计原理流程图2.2原始信号的获取我们用移动端的录音机录制好一段话,相比PC端录音,其优势是方便,而且电脑运行的时候会产生一定的噪声,用手机录好就可以避免这个问题。然后将其导入电脑,以文件名“test”,后缀为.wav保存到D:\MATLAB\work中,即可进行后期的运用。2.3原始信号的时频分析时域分析:任何一段语言信号,无论是人的声音、动物的声音、机械的声音还是其他自然界的声音,它一定都会在时间上有幅值变化,并且与之会对应有相应的高音、低音频率成分,且时间是判断音量大小的幅值分析,所以我们采用时间序列分析法去对我们的原始信号进行分析。频域分析:频域分析即是对原始信号的成分构成进行研究。频域分析方法有两种:一个是滤波器组分析法,另一个是傅里叶分析法。本文研究所用到的是傅里叶分析方法。傅里叶变换的所做的工作就是分析频谱,从此变换过程中我们可以看到,语音信号的音调大小,振幅的上下波动都可以被观测出来。由此可以看出来,信号的非平稳性,这需要我们再用到短时傅里叶变换法来分析频谱,即“短时谱”。2.4信号的加噪信号的加噪是指在原始的语音信号上面加上随机噪声,我们利用Rand函数来产生和原始信号等长度的随机噪声信号,将两个信号叠加到同一个信号上,这就是对原始信号的加噪处理。2.5滤波器的选择及滤波原理2.5.1巴特沃斯低通滤波器巴特沃斯滤波器是电子滤波器的一种。巴特沃斯滤波器的特点是通频带的频率响应曲线最平滑。这种滤波器最先由英国工程师斯替芬·巴特沃斯(StephenButterworth)在1930年发表在英国《无线电工程》期刊的一篇论文中提出的。巴特沃斯低通滤波器是常用的模拟滤波器之一,其通带和阻带都有平坦的幅度响应。现给定两个信号,一个是正弦信号,一个是矩阵信号,模拟人的噪声,给两个信号加随机噪声来构成混合信号,来进行滤波,滤波效果图如下图2-2:图2-2滤波效果图从上图中可见,加噪之后的正弦信号和矩阵信号通过巴特沃斯低通滤波器滤波之后,其信号波形大大的减少了波动,且波形变得平滑圆润,降噪效果明显得到提升,可适用于本文的研究。程序代码见附录I。2.5.2滤波对加了噪声信号的语音信号进行滤波处理,其用到的就是在基于Matlab2015a版本软件上自带的相关函数,如巴特沃斯低通滤波器的buttord函数,函数中的滤波器阶数和截止频率的值是我们可以给定的。其使用方法是[N,Wn]=buttord(wp,ws,rp,rs),其中rp为通带衰减最大值,rs是阻带衰减最小值,wp,ws可以是实际的频率值,通过给定相应的值来求出滤波器阶数N和截止频率Wn,第二步是用butter函数求出频率响应的参数即:滤波器的传输函数,[b,a]=butter(N,Wn,’s’),最后一步是用bilinear函数即双线性Z变换法来求得数字滤波器的系数b,a。第3章MATLABGUI设计及使用3.1MALAB软件简述MATLAB是外国公司开发的软件,其主要的应用领域涉及控制设计、信号处理以及金融建模设计等。在其功能方面,MATLAB软件可以进行数学上的计算,数据上的可视化符号的运算,图形的处理等一系列功能。值得一提的是在数据上的可视化功能方面,它增添了很多工具箱。尤其是在MATLAB的最新版本中,速度有了很大的提高。因此对我毕业设计的软件部分有很大的利用价值和帮助。那么本文就是运用MATLAB进行程序编写,在此基础上搭建GUI界面进行语音信号的采集和分析等仿真设计。在MATLAB软件中输入GUIDE命令后会如下图3-1,此界面是让新建一个GUI界面,其中有保存路劲可选。进入主界面后,就会看到界面主要有菜单区域、工具区域、控件区域、图形编辑区域。图3-1新建GUI界面操作3.2核心控件功能说明3.2.1静态文本框的使用界面上所有静态文本框可以通过用户预设,给出相应的固定显示内容,它的参数主要是包括:文本框的颜色、文本框内预设字体设置、预设内容的设置、动态索引的属性等,具体参数设置界面如图3-2所示。图3-2静态文本属性GUI界面中我们设计出的界面会涉及到美观性以及相关的特性,属性及功能描述可通过下表3-1可见:表3-1控件相关属性表序号属性功能aBackgroundColor显示的真彩色图像bCData显示的真彩色图像cForegroundColor文本颜色dString文本输入eVisible控件是否可见fEnable使能状态gTag定义hUserData用户指定数据iPosition尺寸和位置jUnits位置及大小的单位每一个控件函数会执行相对应的回调,简要列出执行方式有如下:BusyAction:处理回调函数的中断;CallBack:连接程序系统的扭带;CreateFcn:在对象产生过程中执行;DeleteFcn:删除对象过程中执行;Interruptible:指定当前的回调函数在执行时是否允许中断,去执行其他的函数。3.2.2动态文本框的使用界面上所有动态文本框可以通过用户预设,给出需要随时更改的内容显示窗口,它可以根据程序循环索引不断改变自己的内容,它的参数主要是包括:文本框的颜色、文本框内预设字体设置、预设内容的设置、动态索引的属性等,具体参数设置界面如图3-3所示,向动态文本框输入显示内容固定语句为:set(handles.edit1,'String',filepath);图3-3动态文本框属性3.3.3执行按钮的使用界面上所有执行按钮相当于一个控制开关,每点击一次执行按钮,这执行相应的主程序,从而完成相应的程序任务,所有的额主程序写在执行按钮的回调函数(functionpushbutton1_Callback(hObject,eventdata,handles))中,其中:hObject即为handletopushbutton1(seeGCBO);eventdata即为reserved-tobedefinedinafutureversionofMATLAB;handles即为structurewithhandlesanduserdata(seeGUIDATA);说明hObject为发生事件的源控件,eventdata为事件数据结构,handles为传入的对象句柄。用户根据自己的要求编写相应的执行程序,具体参数设置界面如图3-4所示。图3-4执行按钮属性3.3.4坐标轴控件的使用界面上用以显示结果的图形表现形式,可以更加直观了解数据的动态变化情况,具体参数设置界面如图3-5所示。图3-5坐标属性3.3回调函数及数据传递我们每设计一个的控件,其右键选中下拉都会有几种不同的回调函数,其中一种就是CallBack函数,这种函数可能会因不同的控件而可能不是回调函数,所以视情况可定,如图3-6所示。图3-6回调函数句柄图形之间的层次关系,如图3-7所示。创建图形句柄的常见函数:(1)figure:创建一个新的图形对象;(2)newplot:做好开始画新图形对象的准备;(3)axes函数:创建坐标轴图形对象;(4)line:画线;(5)patch:填充多边形;(6)surface:绘制三维曲面;(7)image:显示图片对象;(8)uicontrol:生成用户控制图形对象;(9)uimenu:生成图形窗口的菜单中层次菜单与下一级子菜单。图3-7层次关系图而获取与设置对象属性常用到的函数有:gcf函数:获得当前图形窗口的句柄;gca函数:获得当前坐标轴的句柄;gco函数:获得当前对象的句柄;gcbo函数:获得当前正在执行调用的对象的句柄;gcbf函数:获取包括正在执行调用的对象的图形句柄;delete函数:删除句柄所对应的图形对象;findobj函数:查找具有某种属性的图形对象。设置方法:(1)get函数返回某些对象属性的当前值。例如:p=get(obj,'Position');(2)函数set改变句柄图形对象属性,例如:set(obj,'Position',vect)。在GUI编程序代码时,值传递的方式我会用到如下2种方法:第一种方法是调用主函数的数据结构传值,即handles。具体例子如下:functionsliderbar1_Callback(hObject,eventdata,handles)%%eg1v1=get(hObject,'value');obj=handles.Text1%直接定位Tag为Text1的控件set(obj,'value',v1);%%eg2handles.MyStruct.P1=v1;%更改handles中的数据guidata(hObject,handles);%更新handlesend通过这个编程我们可以看出假设一个图像窗口句柄中有handles,那子函数Callback就可以让handles进行值传递。第二种方法是用控件的UserData来传值:每个控件我们都可以对它进行定义域,可以做一个最直观的例子如下:t1=timer('TimerFcn',{@Timer1Fcn},'ErrorFcn',@Timer1ErrorFcn},'Period',1.0,'ExecutionMode','fixedrate');t1.Userfata=handles.MyStruct;其中Timer1Fcn表面上看是未给它递入参数,然而函数的定义我们一定要有2个参数或以上:functionTimer1Fcn(obj,eventata);obj.UserData=XXXXX;或者我们定义Timer只允许这样传递一个参数,又或者可以像如下这样进行传值。t1=timer('TimerFcn',{@Timer1Fcn,handles},'ErrorFcn',{@Timer1ErroFcnr,handles},'Period',1.0,'ExecutionMode','fixedrate');第4章测试效果预先准备一段时长大约为8s的语音信号“test.wav”,以此在平台上完成后续的测试步骤。4.1语音信号采集我们采用MATLAB中的自带audioread函数对语音信号进行采集,这个函数是我们可以直接使用的,调用方式如下:[y,fs]=audioread('D:\test.wav');其中括号内的是指我们录制的语音所存放的路径,其中y是声音数据量,fs是采样频率,我们将两个值放入MATLAB的工作空间。然后采用傅里叶变换分析法,即fft(y)函数,选取长度y里的点数进行傅里叶变换:y_p=fft(y,n),可得到频域。原始语音信号及其频谱如下图4-1所示:图4-1原始语音信号4.2信号加噪采用matlab中的randn函数,它可以生成标准正态分布的随机数或者是矩阵,所以可以利用这个函数可以生成随机噪声,以达到目的。相关功能代码编程如下:noise=n*mean(pyr(:,1))*randn(n,1);其中n表明生成的随机噪声函数的幅值取决于原始信号的平均值的n倍,在信号加噪过程中,我将n分别取了n=0.01,n=0.1,n=1,n=10四个值,测试比较图如下:当取n值为0.01时,加噪后的频谱图与原始信号的对比图如下图4-2:图4-2n=0.01当取n值为0.1时,加噪后的频谱图与原始信号的对比图如下图4-3:图4-3n=0.1当取n值为1时,加噪后的频谱图与原始信号的对比图如下图4-4:图4-4n=1当取n值为10时,加噪后的频谱图与原始信号的对比图如下图4-5:图4-5n=10通过四组的测试值,我发现当n=0.01时,其加噪后的时频幅值与原始信号相比,其波动不大,其只符合在较安静的环境下测试;取n=1和n=10时,发现其相比原始信号,其噪声的幅值过于大,易造成原始信号的失真,最终发现取n=0.1时,加噪对于原始信号的是最符合我们平常所处的环境。之所以选择0.1倍于基准声幅,也是为了避免添加具体数值噪声带来的变化不明显或者过强,造成原始语音信号失真过多。此时加噪后的信号时域和频域分析如图4-3所示。4.3信号数字滤波利用MATLAB数字滤波器设置函数:[n,wn]=buttord(wp,ws,rp,rs,'s');[b,a]=butter(n,wn,'s');[bz,az]=bilinear(b,a,0.5);设置一个巴特沃斯低通滤波器,滤波器的频率响应曲线如图4-6所示。图4-6数字滤波器我选择用到巴特沃斯低通滤波器原因是通过测试,巴特沃斯低通滤波器对加噪信号的滤波效果是最好的。当我们选定此滤波器之后,就开始需要确定其滤波器的参数值。在我们采用双线性变换法当中,是将加噪后的信号通过低通滤波器,经选择尝试多组性能指标参数如表4-1下,发现Fs=1000,Fp=1200,rp=2,rp=80这组参数对滤波的效果最好。表4-1测试值FsFprprs10001200280110013002801200140028013001500280滤波后的信号时频分析如图4-7所示。图4-7滤波后的信号4.4声音回放无论是原始声音、还是加噪后的声音都可以再由数字信号转化为模拟信号,从而实现语音信号的播放。[pyr,fs]=audioread(filepath);%声音读取sound(pyr(:,1),fs);%声音回放结合原始信号加噪和加噪信号的滤波的测试结果来看,影响声音回放效果跟我们选择的基准声幅的倍数和滤波参数值的大小有关系。通过几次的测试,我发现当选择0.1倍基准声幅,且通带边界频率Fp=1000,抽样频率Fs=2000,rp=2,rs=80时,此时声音回放效果最佳,既能恢复到原始声音,且对人的声音具有较高的识别度。第5章仿真系统设计及实现5.1语音信号的采集模块语音信号采集这个模块,为做到系统测试的普适性和统一性,本文首先对于音频文件的格式定义为“*.wav”格式,放置路径不限,可以根据软件自适应选择文件的位置,如图5-1所示,当点击“导入语音”按钮,则进入文件地址选择页面,如图5-2所示,当前文件夹中所有满足条件的文件都会显示在当前窗口,一旦选中某个音频文件后,动态文本框中会显示该文件的绝对路径信息,方便用户检查。图5-1语音采集模块图5-2文件打开5.2语音信号分析模块语音分析模块的设置,为加强使用系统者对语音信号采集与分析的效果体现以及方便用户进行对比,为此设计了六个按键,分别是原始时域分析、原始频域分析、加噪时域分析、加噪频域分析、滤波后时域分析、滤波后频域分析。按照处理流程,第一步是显示原始语音信号的时频分析效果,根据提取出来的语音信号特征分别进行时域显示和频域显示;然后加入随机噪声,通过分析后,就会有加噪后的语音信号时域显示和频域显示波形图;最后进行低通滤波,实现原始信号的恢复,每一个控件的设置会对应的有一个Callback回调函数,通过对这个回调函数的编程来实现对应每个按键的功能。最后加上播放语音和关闭按键,从而尽可能地还原信号,播放效果。整体语音分析模块如图5-3所示。图5-3语音分析模块5.3整体界面设计为使用户更简洁明了、直观的看到我们的系统设计,我将语音采集模块和语音分析模快放置在同一个界面,并用静态文本框加上系统名称:“基于MatlabGUI的语音信号采集与分析系统”。其界面没有加过多的美观设计。最终搭建完成的语音信号采集与分析系统的平台控件如图5-4所示。系统的编程代码见附录II。图5-4完整界面5.4仿真及实现效果为检验其系统对语音信号的采集与处理效果,我将录制来自三种不同的声音来观测其加噪、滤波前后的频谱图,及声音回放的效果。录制一段带音乐的狗叫声,时间大约在15s左右,其仿真滤波效果如下图5-5:图5-5动物滤波频谱对比图录制一段人的声音,大约在8s左右,文字内容为:“武汉加油!中国加油!战胜疫情!富国强兵!”频谱图对比效果如下图5-6:图5-6人的声音频谱对比图录制一段自然界流水的声音,大约在9s左右,频谱对比图如下图5-7:图5-7流水频谱对比图分析与小结:通过选取录制三种不同的声音,在系统上进行加噪,滤波处理,与原始信号的频谱进行对比,我们可以看到滤波之后的频谱图明显在原始信号的两边减少了幅度的波动,滤波效果得到显现,且从声音的回放中,能清晰可听,辨识度高,能识别出语音内容。系统整体仿真效果是成功的。此系统的界面设计可应用于语音信号的分析与处理的基础教学,对于学者理解语音信号的特性具有很好的效果。第6章总结针对本次毕业设计,总体来说我对语音信号有了新的一个认识。本次设计首先是对语音信号的采集与分析做了一个背景调查,发现语音信号识别技术广泛运用在我们身边,如常用的微信语音助手、车载语音导航、智能机器人语音识别等,但是普遍面临的问题都会有大词汇量连续语音识别无法正确、合理的运用,在室外环境噪声相对较大的情况下,语音识别会面临不稳定性以及恢复原声的困难性。针对这些,我再查看了关于此的国内外研究现状,大多是围绕此再不断的发展研究进步当中。于是我开始了对我本文的设计。基于本次毕业设计是在MATLAB2015A版本软件上完成的,我首先去了解了MATLAB的相关使用说明,对软件的基础知识做进一步加深。再者开始研究语音信号采集的原理,录制好一段语音导入系统,对此原始语音信号进行一个时域分析,观测其原始信号随时间的一个幅值变化,然后通过傅里叶变换来取得原始信号的频谱图。随后加入一个跟原始信号等长度的随机噪声,并观测其加入噪声后的时域图和频谱图,最后通过验证发现巴特沃斯低通滤波器的滤波效果最好,所以本设计采用了此滤波器来对加噪信号的滤波。通过不断测试,给多组测试值参数,最终得出相应的性能指标。此外,本研究是在先设计好的GUI界面上完成的,所以我针对于此再去学习关于GUIDE模型搭建的知识,主要涉及到的是静态、动态文本框,控件以及回调函数的运用。在搭建好MATLABGUI界面系统之后,我选择了三段不同的录音来实现我的设计仿真效果,通过分析对比其时频图,并播放其原始声音,发现整个设计下来还是成功的。介于本次设计是做一款在MATLAB软件上实现语音信号的采集及分析的用户图形界面系统,其主要的优点还是以界面、窗口式的画面呈现在我们面前,以便我们更直观的去研究语音信号的分析过程。虽然应用较少,其中也存在不足之处,但这可以运用到我们对语音信号基础知识的教学研究上面。在本次毕业设计中,也遇到许多的问题,通过这次的经历,我发现需要把学到的知识去真正用到实践中才能发现自己对知识的掌握程度,而且还需要养成具有逻辑的思考,而不是随意地使用知识。这次设计培养了我克服苦难的意志坚持性和百折不挠地克服困难和障碍的能力。参考文献:[1]苏金明,王永利.MATLAB7.0实用指南(上册)[M].北京:电子工业出版社,2004,81-98.[2]刘慧颖.MATLABR2006a基础教程[M].北京:清华大学出版社,2007,132-136.[3]刘敏,魏玲.Matlab通信仿真与应用[J].北京:国防工业出版社,2001.1.[4]赵怡红,张常年,数字信号处理及其MATLAB的实现[M].北京:化学工业出版社,2002.1.[5]徐俊文,王强,金珩.MATLAB环境下的GUI编程[J].内蒙古民族大学学报(自然科学版),2006(06):640-641.[6]党丹凤,周立勇,王海涛.基于MATLAB的图形用户界面设计[J].测绘技术装备,2015,17(03):71-74.[7]周渊,王炳和,刘斌胜.基于MATLAB的噪声信号采集与分析系统的设计[J].电声技术,2004(07):52-54.[8]柴瑞娟.基于MATLABGUI的线性控制系统教学仿真软件的设计[J].计算机与现代化,2003(09):65-67.[9]钟可君,张海林.基于MatlabGUI设计的光学实验仿真[J].实验室研究与探索,2010,29(10):52-53+80.[10]吕波,黄靖钧.MATLAB与大学物理波动光学教学整合的研究[J].九江学院学报(自然科学版),2010,25(03).[11]SportsMonitoringDataandVideoInterfaceUsingaGUIAutoGenerationMatlabTool[J].HugoG.Espinosa,DanielA.James,SeanKelly,AndrewWixted.ProcediaEngineering.2017:15-19.[12]Matlab-basedinterfaceforthesimultaneousacquisitionofforcemeasuresandDopplerultrasoundmuscularimages[J].ComputerMethodsandProgramsinBiomedicine.2016:20-25.[13]燕丽红.基于Matlab&GUI语音信号处理平台的设计[J].计算机与数字工程,2020,48(01):267-270.[14]余海峰.基于matlab的语音信号特征提取方法研究[J].信息通信,2019(12):75-77.[15]马晓伟.基于智能声控需求的语音识别研究[J].通讯世界,2019,26(10):133-134.[16]卓嘎,次仁尼玛.基于Matlab的藏语语音频谱仿真和分析[J].电子设计工程,2019,27(19):170-173.[17]邓克琦.基于MATLAB实现语音信号储存空间的简化[J].电声技术,2019,43(10):8-10.[18]白燕燕,胡晓霞.基于MATLAB的语音短时谱的分析[J].电子测试,2019(18):44-45.[19]王青云,梁瑞宇,赵力,冯月芹,包永强.实时语音信号处理教学与实验方法研究[J].实验室研究与探索,2019,38(09):186-189+220.[20]白燕燕,胡晓霞.基于MATLAB语谱图的声乐研究[J].软件工程,2019,22(09):1-4.[21]张亚峰,刘静怡.自适应语音信号去噪处理研究[J].精密制造与自动化,2019(03):39-42.致谢毕业设计是大学本科四年最后一次考核环节,也是最重要的一次考核。首先感谢母校,广州大学松田学院四年来对我的培养和帮助,为我的大学生活提供了良好的环境,为即将正式进入社会的我做好铺垫。本次毕业设计,我也非常感谢我的指导老师,赵老师在我的整个论文工作中,给我提出很多有效的意见,帮助我迅速的找到论文的不足之处,细心负责、严格要求的态度使我感触很深,能在很早的时间里督促我去按指定的时间里完成论文。同时也感谢身边一起努力的同学,在我困惑提出疑问的时候给予我帮助和鼓励。最后,恳切希望各位老师认真审阅,指出其中不足之处。附录附录I验证巴特沃斯滤波器效果程序代码Fs=1000;%采样率N=1000;%采样点数n=0:N-1;t=0:1/Fs:1-1/Fs;%时间序列Signal_Original_1=sin(2*pi*10*t)+sin(2*pi*20*t)+sin(2*pi*30*t);Signal_Original_2=[zeros(1,100),20*ones(1,20),-2*ones(1,30),5*ones(180),-5*ones(1,30),9*ones(1,140),-4*ones(1,40),3*ones(1,220),12*ones(1,100),5*ones(1,20),25*ones(1,30),7*ones(1,190)];Noise_White_2=0.5*randn(1,1000);%高斯白噪声Noise_White_1=[0.3*randn(1,500),rand(1,500)];%前500点高斯分部白噪声,后500点均匀分布白噪声Mix_Signal_1=Signal_Original_1+Noise_White_1;%构造的混合信号Mix_Signal_2=Signal_Original_2+Noise_White_2;%构造的混合信号%信号Mix_Signal_1和Mix_Signal_2分别作巴特沃斯低通滤波。figure(1);Wc=2*50/Fs;%截止频率50Hz[b,a]=butter(4,Wc);Signal_Filter=filter(b,a,Mix_Signal_1);subplot(4,1,1);%Mix_Signal_1原始信号plot(Mix_Signal_1);axis([0,1000,-4,4]);title('原始信号');subplot(4,1,2);%Mix_Signal_1低通滤波滤波后信号plot(Signal_Filter);axis([0,1000,-4,4]);title('巴特沃斯低通滤波后信号');%混合信号Mix_Signal_2巴特沃斯低通滤波Wc=2*100/Fs;%截止频率100Hz[b,a]=butter(4,Wc);Signal_Filter=filter(b,a,Mix_Signal_2);subplot(4,1,3);%Mix_Signal_2原始信号plot(Mix_Signal_2);axis([0,1000,-10,30]);title('原始信号');subplot(4,1,4);%Mix_Signal_2低通滤波滤波后信号plot(Signal_Filter);axis([0,1000,-10,30]);title('巴特沃斯低通滤波后信号');附录II源程序代码functionvarargout=yuyinxinhao(varargin)%YUYINXINHAOMATLABcodeforyuyinxinhao.fig%YUYINXINHAO,byitself,createsanewYUYINXINHAOorraisestheexisting%singleton*.%%H=YUYINXINHAOreturnsthehandletoanewYUYINXINHAOorthehandleto%theexistingsingleton*.%%YUYINXINHAO('CALLBACK',hObject,eventData,handles,...)callsthelocal%functionnamedCALLBACKinYUYINXINHAO.Mwiththegiveninputarguments.%%YUYINXINHAO('Property','Value',...)createsanewYUYINXINHAOorraisesthe%existingsingleton*.Startingfromtheleft,propertyvaluepairsare%appliedtotheGUIbeforeyuyinxinhao_OpeningFcngetscalled.An%unrecognizedpropertynameorinvalidvaluemakespropertyapplication%stop.Allinputsarepassedtoyuyinxinhao_OpeningFcnviavarargin.%%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone%instancetorun(singleton)".%%Seealso:GUIDE,GUIDATA,GUIHANDLES%Edittheabovetexttomodifytheresponsetohelpyuyinxinhao%LastModifiedbyGUIDEv2.514-Feb-202010:01:17%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@yuyinxinhao_OpeningFcn,...'gui_OutputFcn',@yuyinxinhao_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%Executesjustbeforeyuyinxinhaoismadevisible.functionyuyinxinhao_OpeningFcn(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputFcn.%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%varargincommandlineargumentstoyuyinxinhao(seeVARARGIN)%Choosedefaultcommandlineoutputforyuyinxinhaohandles.output=hObject;%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakesyuyinxinhaowaitforuserresponse(seeUIRESUME)%uiwait(handles.figure1);%Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout=yuyinxinhao_OutputFcn(hObject,~,handles)%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;%Executesonbuttonpressinpushbutton2.functionpushbutton2_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[pyr,fs]=audioread(filepath);%声音读取并返回样本数据pyr和数据的采样率fs%sound(pyr,fs);%声音回放axes(handles.axes1);%将上面的坐标轴作为当前的坐标轴plot(pyr(:,1));%画出样本数据pyr第一列的所有元素,即原始信号xlabel('时间');ylabel('幅度');%title('初始信号波形');%绘出时域波set(gca,'FontSize',6);%设置文字大小,同时影响坐标轴标注、图例、标题等。grid;%Executesonbuttonpressinpushbutton3.functionpushbutton3_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[pyr,fs]=audioread(filepath);%声音读取n=length(pyr(:,1));%选取变换的点数pyr1=fft(pyr(:,1),n);%对n点进行快速傅里叶变换%绘出频域频谱axes(handles.axes1);plot(abs(fftshift(pyr1)));%画出频谱平移的之后取绝对值得频谱图%title('初始信号频谱');xlabel('频率');ylabel('幅度');set(gca,'FontSize',6);%设置文字大小,同时影响坐标轴标注、图例、标题等。grid;%Executesonbuttonpressinpushbutton4.functionpushbutton4_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton4(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[pyr,fs]=audioread(filepath);%声音读取n=length(pyr);noise=0.5*mean(pyr(:,1))*randn(n,1);%加噪声%noise=noise';s=pyr(:,1)+noise;%将两个信号叠加到一个新的信号加噪axes(handles.axes2);plot(s);%title('加噪声后信号波形')xlabel('时间');ylabel('幅度');set(gca,'FontSize',6);%设置文字大小,同时影响坐标轴标注、图例、标题等。grid;functionpushbutton5_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton5(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[pyr,fs]=audioread(filepath);%声音读取n=length(pyr(:,1));noise=0.1*mean(pyr(:,1))*randn(n,1);%加噪声%noise=noise';s=pyr(:,1)+noise;%画出加噪之后,其时域频域S=fft(s,n);axes(handles.axes2);plot(abs(fftshift(S)));xlabel('频率');ylabel('幅度');%title('加噪声后信号信号频谱');set(gca,'FoExecutesonbuttonpressinpushbutton5.ntSize',6);%设置文字大小,同时影响坐标轴标注、图例、标题等。grid;%Executesonbuttonpressinpushbutton6.functionpushbutton6_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton6(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[pyr,fs]=audioread(filepath);%声音读取%设计IIR低通滤波器rp=2;%通带最大衰减2dbrs=80;%阻带最小衰减80dbFt=8000;%采样频率Fp=1000;%通带边界频率Fs=1200;%抽样频率为2000Hzwp=2*pi*Fp/Ft;%模拟角频率ws=2*pi*Fs/Ft;%求出待设计的模拟滤波器的边界频率[n,wn]=buttord(wp,ws,rp,rs,'s');%低通滤波器的阶数和截止频率[b,a]=butter(n,wn,'s');%S域频率响应的参数即:滤波器的传输函数[bz,az]=bilinear(b,a,0.5);%利用双线性变换实现频率响应S域到Z域的变换%滤波n1=length(pyr(:,1));%计算音频信号的长度noise=0.1*mean(pyr(:,1))*randn(n1,1);%加噪声s=pyr(:,1)+noise;z=filter(bz,az,s);%滤波axes(handles.axes3);plot(z);%title('低通滤波后的信号波形');xlabel('时间');ylabel('幅度');set(gca,'FontSize',6);%设置文字大小,同时影响坐标轴标注、图例、标题等。grid;%Executesonbuttonpressinpushbutton7.functionpushbutton7_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton7(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[pyr,fs]=audioread(filepath);%声音读取rp=2;rs=80;Ft=8000;Fp=1000;Fs=1200;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;%求出待设计的模拟滤波器的边界频率[n,wn]=buttord(wp,ws,rp,rs,'s');%低通滤波器的阶数和截止频率[b,a]=butter(n,wn,'s');%S域频率响应的参数即:滤波器的传输函数[bz,az]=bilinear(b,a,0.5);%利用双线性变换实现频率响应S域到Z域的变换%滤波n1=length(pyr(:,1));noise=0.1*mean(pyr(:,1))*randn(n1,1);%加噪声s=pyr(:,1)+noise;z=filter(bz,az,s);Z=fft(z);%滤波后的信号频谱axes(handles.axes3);plot(abs(fftshift(Z)));%title('低通滤波后信号的频谱');xlabel('频率');ylabel('幅度');set(gca,'FontSize',6);%设置文字大小,同时影响坐标轴标注、图例、标题等。grid;%Executesonbuttonpressinpushbutton8.functionpushbutton8_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton8(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[pyr,fs]=audioread(filepath);%声音读取sound(pyr(:,1),fs);%声音回放%Executesonbuttonpressinpushbutton9.functionpushbutton9_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton9(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)closefunctionedit1_Callback(hObject,eventdata,handles)%hObjecthandletoedit1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofedit1astext%str2double(get(hObject,'String'))returnscontentsofedit1asadouble%Executesduringobjectcreation,aftersettingallproperties.functionedit1_CreateFcn(hObject,eventdata,handles)%hObjecthandletoedit1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end%Executesonbuttonpressinpushbutton1.functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[FileName,PathName,FilterIndex]=uigetfile('*.wav');filepath=[PathName,FileName];set(handles.edit1,'String',filepath);
捷键与一些电脑小技巧HYPERLINKwinkey+d:
这是高手最常用的第一快捷组合键。这个快捷键组合可以将桌面上的所有窗口瞬间最小化,无论是聊天的窗口还是游戏的窗口……只要再次按下这个组合键,刚才的所有窗口都回来了,而且激活的也正是你最小化之前在使用的窗口!
--这个就是winkeywinkey+f:
不用再去移动鼠标点“开始→搜索→文件和文件夹”了,在任何状态下,只要一按winkey+f就会弹出搜索窗口。
winkey+r:
在我们的文章中,你经常会看到这样的操作提示:“点击‘开始→运行’,打开‘运行’对话框……”。其实,还有一个更简单的办法,就是按winkey+r!
alt+tab:
如果打开的窗口太多,这个组合键就非常有用了,它可以在一个窗口中显示当前打开的所有窗口的名称和图标●,选中自己希望要打开的窗口,松开这个组合键就可以了。而alt+tab+shift键则可以反向显示当前打开的窗口。
winkey+e:
当你需要打开资源管理器找文件的时候,这个快捷键会让你感觉非常“爽”!再也不用腾出一只手去摸鼠标了!
小提示:
winkey指的是键盘上刻有windows徽标的键●。winkey主要出现在104键和107键的键盘中。104键盘又称win95键盘,这种键盘在原来101键盘的左右两边、ctrl和alt键之间增加了两个windwos键和一个属性关联键。107键盘又称为win98键盘,比104键多了睡眠、唤醒、开机等电源管理键,这3个键大部分位于键盘的右上方。
再补充点
F1显示当前程序或者windows的帮助内容。
F2当你选中一个文件的话,这意味着“重命名”
F3当你在桌面上的时候是打开“查找:所有文件”对话框
F10或ALT激活当前程序的菜单栏
windows键或CTRL+ESC打开开始菜单
CTRL+ALT+DELETE在win9x中打开关闭程序对话框
DELETE删除被选择的选择项目,如果是文件,将被放入回收站
SHIFT+DELETE删除被选择的选择项目,如果是文件,将被直接删除而不是
放入回收站
CTRL+N新建一个新的文件
CTRL+O打开“打开文件”对话框
CTRL+P打开“打印”对话框
CTRL+S保存当前操作的文件
CTRL+X剪切被选择的项目到剪贴板
CTRL+INSERT或CTRL+C复制被选择的项目到剪贴板
SHIFT+INSERT或CTRL+V粘贴剪贴板中的内容到当前位置
ALT+BACKSPACE或CTRL+Z撤销上一步的操作
ALT+SHIFT+BACKSPACE重做上一步被撤销的操作
Windows键+D:最小化或恢复windows窗口
Windows键+U:打开“辅助工具管理器”
Windows键+CTRL+M重新将恢复上一项操作前窗口的大小和位置
Windows键+E打开资源管理器
Windows键+F打开“查找:所有文件”对话框
Windows键+R打开“运行”对话框
Windows键+BREAK打开“系统属性”对话框
Windows键+CTRL+F打开“查找:计算机”对话框
SHIFT+F10或鼠标右击打开当前活动项目的快捷菜单
SHIFT在放入CD的时候按下不放,可以跳过自动播放CD。在打开wo
rd的时候按下不放,可以跳过自启动的宏
ALT+F4关闭当前应用程序
ALT+SPACEBAR打开程序最左上角的菜单
ALT+TAB切换当前程序
ALT+ESC切换当前程序
ALT+ENTER将windows下运行的MSDOS窗口在窗口和全屏幕状态间切换
PRINTSCREEN将当前屏幕以图象方式拷贝到剪贴板
ALT+PRINTSCREEN将当前活动程序窗口以图象方式拷贝到剪贴板
CTRL+F4关闭当前应用程序中的当前文本(如word中)
CTRL+F6切换到当前应用程序中的下一个文本(加shift可以跳到前
一个窗口)
在IE中:
ALT+RIGHTARROW显示前一页(前进键)
ALT+LEFTARROW显示后一页(后退键)
CTRL+TAB在页面上的各框架中切换(加shift反向)
F5刷新
CTRL+F5强行刷新1.打开“我的电脑”-“工具”-“文件夹选项”-“查看”-在“显示所有文件和文件夹”选项前打勾-“确定”
2.删除以下文件夹中的内容:
x:\DocumentsandSettings\用户名\Cookies\下的所有文件(保留index文件)
x:\DocumentsandSettings\用户名\LocalSettings\Temp\下的所有文件(用户临时文件)
x:\DocumentsandSettings\用户名\LocalSettings\TemporaryInternetFiles\下的所有文件(页面文件)
x:\DocumentsandSettings\用户名\LocalSettings\History\下的所有文件(历史纪录)
x:\DocumentsandSettings\用户名\Recent\下的所有文件(最近浏览文件的快捷方式)
x:\WINDOWS\Temp\下的所有文件(临时文件)
x:\WINDOWS\ServicePackFiles(升级sp1或sp2后的备份文件)
x:\WINDOWS\DriverCache\i386下的压缩文件(驱动程序的备份文件)
x:\WINDOWS\SoftwareDistribution\download下的所有文件
3.如果对系统进行过windoesupdade升级,则删除以下文件:x:\windows\下以$u...开头的隐藏文件
4.然后对磁盘进行碎片整理,整理过程中请退出一切正在运行的程序
5.碎片整理后打开“开始”-“程序”-“附件”-“系统工具”-“系统还原”-“创建一个还原点”(最好以当时的日期作为还原点的名字)
6.打开“我的电脑”-右键点系统盘-“属性”-“磁盘清理”-“其他选项”-单击系统还原一栏里的“清理”-选择“是”-ok了
7、在各种软硬件安装妥当之后,其实XP需要更新文件的时候就很少了。删除系统备份文件吧:开始→运行→sfc.exe/purgecache近3xxM。(该命令的作用是立即清除"Windows文件保护"文件高速缓存,释放出其所占据的空间)
8、删掉\windows\system32\dllcache下dll档(减去200——300mb),这是备用的dll档,只要你已拷贝了安装文件,完全可以这样做。
9、XP会自动备份硬件的驱动程序,但在硬件的驱动安装正确后,一般变动硬件的可能性不大,所以也可以考虑将这个备份删除,文件位于\windows\drivercache\i386目录下,名称为driver.cab,你直接将它删除就可以了,通常这个文件是74M。
10、删除不用的输入法:对很多网友来说,WindowsXPt系统自带的输入法并不全部都合适自己的使用,比如IMJP8_1日文输入法、IMKR6_1韩文输入法这些输入法,如果用不着,我们可以将其删除。输入法位于\windows\ime\文件夹中,全部占用了88M的空间。
11、升级完成发现windows\多了许多类似$NtUninstallQ311889$这些目录,都干掉吧,1x-3xM
12、另外,保留着\windows\help目录下的东西对我来说是一种伤害,呵呵。。。都干掉!
13、关闭系统还原:系统还原功能使用的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 擎苍社工作计划
- 《全景新视野》课件
- 超市201年度工作计划
- 新学期大学生学生会工作计划
- 办公室教育工作计划
- 2024小学精神文明建设工作计划开头语
- 建筑施工企业年度工作计划
- 2024年小学六年级上学期班主任工作计划范文
- 水运工程质量教育培训计划范文
- 项目工作计划怎么写
- 校园水果店经营投标方案(技术方案)
- 六个必须坚持专题辅导讲稿
- 电力机车运用与操纵 课件 项目5、6 电力机车乘务员一次标准化、非正常行车
- 水库数字孪生灌区建设需求
- 儿童中医穴位保健知识讲座
- 基于STM32的智能风扇
- 铁路客运服务质量的提升与改善
- 电池制造中的超声波焊接与连接技术
- 机械加工工艺培训课件
- 北师大版数学八年级上册综合与实践《哪一款手机资费套餐更合适》课件
- 工地模板亏损报告
评论
0/150
提交评论