版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 Dsp课程设计 基于Matlab的声音的延迟与混响摘要数字信号处理技术自诞生以来,有了快速的发展,主要是研究用数字或符号序列表示和处理信号,被广泛应用于各个领域。本次设计是用MATLAB语言对语音信号进行采样分析,并设计数字滤波器对信号进行滤波,比较滤波前后信号特性的变化。用MATLAB提供的GUI界面开发环境设计用户图形界面使布局编程简化。关键词Matlab 语音信号处理正文1. 背景资料:数字信号处理是随着计算机技术的发展而迅速发展起来的一门新兴而古老的学科,它在新的领域如生物医学工程、声学、雷达、地震不、语音通信、数据通信、核科学等学科发挥着重要的作用,而它所采用的各种方法及众多应用已
2、有悠久的历史;同时也是一门具有很强的理论性与实践性,且理论和技术发展都十分迅速的前沿性学科。随着数字化时代的来临,科学技术的进步而生产发展需求的与日俱增,促进了数字信号处理学科的发展,产生了各种巧妙的信号处理算法;特别是计算机技术的飞速发展,为数字信号处理增添了巨大的生命力。数字信号处理主要是研究用数字或符号序列表示和处理信号。处理的目的可以是削弱信号中的多余内容,滤除混杂的噪声和干扰,或者是将信号变换为容易分析和识别的形式,便于估计和选择它的特征参数。例如通过分析和运算,可以估计脑电图或心电图中的某种特征参数,帮助医生查找病因和分析病情,确定合理的治疗方案;又如,信号在传输时,要受到各种干扰
3、,包括失真、衰落和混入的背景噪声,信号处理要排除这些干扰。声音信号是一维连续信号,而计算机只能处理离散信号。为了从离散信号还原连续信号,根据采样定理,可以确定采样频率的最小值。wav文件是一种数字声音文件格式,本课程设计基于Matlab分析了wav声音文件频谱与声音的关系。通过采集个人的一段声音进行频谱分析等处理,然后设计数字滤波器处理这个原始声音的wav文件,并比较滤波以后输出声音信号与原声音信号的异同。2 设计要求(1) 利用Windows下的录音机或其他软件,录制一段语音信号,时间控制在1min左右。(2) 将音频文件加载到matlab中,用合适的方式对信号经行处理(3) 回答以下四个问
4、题:为什么要选择这段语音信号?你怎么处理这段语音信号?为什么你选择用这种方式进行处理?处理结果是什么?3 设计的总体方案与原理3.1 基本思路根据设计要求,我们商定的处理方式是基于matlab来进行声音的延迟与混响3.2 设计流程 录制一段语音信号,时长为15s,并对录制的信号进行采样 语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图 将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较 设计几种特殊类型的滤波器:单回声滤波器,多重回声滤波器,无限个回声滤波器,全通结构的混响器,并画出滤波器的频域响应 用自己设计的滤波器对采集的语音信号进行滤波 分析得到信号的频谱,画出滤波后信
5、号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化 回放语音信号3.3 设计的详细原理3.3.1 信号采样(1)采样频率采样频率是指计算机每秒钟采集多少个声音样本,采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。(2)采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。声卡的位客观地反映了数字声音信号对输入声音信号描述的准确程度。声卡的主要的作用之一是对声音信息进行录制与回放
6、,在这个过程中采样的位数和采样的频率决定了声音采集的质量。3.3.2 混响与延时(1)混响效果主要是用于增加音源的融合感。自然音源的延时声阵列非常密集、复杂,所以模拟混响效果的程序也复杂多变。常见参数有以下几种:混响时间:能逼真的模拟自然混响的数码混响器上都有一套复杂的程序,其上虽然有很多技术参数可调,然而对这些技术参数的调整都不会比原有的效果更为自然,尤其是混响时间。高频滚降:此项参数用于模拟自然混响当中,空气对高频的吸收效应,以产生较为自然的混响效果。一般高频混降的可调范围为0.11.0。此值较高时,混响效果也较接近自然混响;此值较低时,混响效果则较清澈。扩散度:此项参数可调整混响声阵密度
7、的增长速度,其可调范围为010,其值较高时,混响效果比较丰厚、温暖;其值较低时,混响效果则较空旷、冷僻。预延时:自然混响声阵的建立都会延迟一段时间,预延时即为模拟次效应而设置。声阵密度:此项参数可调整声阵的密度,其值较高时,混响效果较为温暖,但有明显的声染色;其值较低时,混响效果较深邃,切声染色也较弱。频率调制:这是一项技术性的参数,因为电子混响的声阵密度比自然混响稀疏,为了使混响的声音比较平滑、连贯,需要对混响声阵列的延时时间进行调制。此项技术可以有效的消除延时声阵列的段裂声,可以增加混响声的柔和感。调治深度:指上述调频电路的调治深度。(2)延时就是将音源延迟一段时间后,再欲播放的效果处理。
8、依其延迟时间的不同,可分别产生合唱、镶边、回音等效果。当延迟时间在335ms之间时人耳感觉不到滞后音的存在,并且他与原音源叠加后,会因其相位干涉而产生"梳状滤波"效应,这就是镶边效果。如果延迟时间在50ms以上时,其延迟音就清晰可辨,此时的处理效果才是回音。回音处理一般都是用于产生简单的混响效果。延时、合唱、镶边、回音等效果的可调参数都差不多,具体有以下几项:*延时时间(Dly),即主延时电路的延时时间调整。*反馈增益(FB Gain),即延时反馈的增益控制。*反馈高频比(Hi Ratio),即反馈回路上的高频衰减控制。*调制频率(Freq),指主延时的调频周期。*调制深度
9、(Depth),指上述调频电路的调制深度。*高频增益(HF),指高频均衡控制。*预延时(Ini Dly),指主延时电路预延时时间调整。*均衡频率(EQ F),这里的频率均衡用于音色调整,此为均衡的中点频率选择。由于延时产生的效果都比较复杂多变,如果不是效果处理专家,建议使用设备提供的预置参数,因为这些预置参数给出的处理效果一般都比较好。3.3.3滤波器设计本次设计用IIR滤波器对信号进行滤波,函数名为filter函数filter的调用格式为 y=filter(b,a,x)该格式采用数字滤波
10、器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a1,此时表示FIR滤波器,否则就是IIR滤波器。该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。(1)单回声滤波器回音可以由简单的延时单元产生。直达声和在R抽样周期后出现的一种单个回音,可以用FIR滤波器产生,微分方程为:yn=xn+xn-R |<1传输函数为:H(z)=1+z-R传递函数的幅频响应形状象梳子,这种滤波器又叫梳状滤波器。(2)多重回声滤波器为了产生以间隔R个抽样周期分开的具有指数衰减振幅的多重回声,可用一个以下形式传输函数的FI
11、R滤波器:无限个振幅以指数衰减间隔为R个抽样周期的多重回声可用以下形式传输函数的IIR滤波器生成:IIR多重回声滤波器的基本频率FR=Fs/R,通常锁定在伴音设备的基频上,比如基鼓拍子。(3)无限个回声滤波器的系统函数: , <1 (4)全通结构的混响器的系统函数:全通滤波器的传递函数公式为H(Z)=y(Z)/X(Z)=(-K+Z(-m)/(1-K*Z(-m)其中m为回声延时取样,k为反馈系数。用直接1型表示这个传递函数则为:y(n)=k*x(n)+x(n-m)+k*y(n-m)可见其实际上是一个简单的IIR滤波器,时间n的输出有时间n的输入和m点之前的输入与输出计算而得。由于这个IIR
12、滤波器的频率响应为水平直线,所以被称为全通滤波器。3.3.4 GUI界面图形用户界面GUI (Graphics User Interface) 是由各种图形对象,如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面,是人机交流信息的工具和方法。GUI 设计即可以基本的MATLAB 程序设计为主,也可以鼠标为主利用GUIDE 工具进行设计。GUIDE ( Graphics User Interface Design Environ2ment) 是一个专用于GUI 程序设计的快速开发环境,使用者通过鼠标就能迅速地产生各种GUI 控件,并随心所欲地改变它们的外形、大小及颜色等,从而帮助用户方便地设计
13、出各种符合要求的图形用户界面。调用GUIDE 的方法有2 种,在MATLAB 命令窗口中输入guide 命令,或在MATLAB 主菜单中点击File New GUI 即可打开一个可编辑的新窗口。在GUIDE 设计环境中,需要用到的工具有属性编辑器、控件布置编辑器、菜单编辑器、对象浏览器、网格标尺设置编辑器以及GUI 应用属性设置编辑器等。GUI 设计面板是GUI 设计工具应用的平台,面板上部提供了菜单和常用工具按钮,左边提供了多种GUI 控件,如按钮、单选按钮、复选框、文本框等。进行GUI 设计时,首先单击GUI 面板左边所需的控件,然后在右边的图形界面编辑区中再次单击某一恰当的位置,这时将在
14、该位置上为图形界面添加一相应的控件,接下来,通过属性编辑器和对齐编辑器对各控件设置相关属性和进行界面布置,以完善界面功能。3.4 程序流程4 程序设计步骤(1) GUI界面的设计function varargout = untitled(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', untitled_OpeningFcn, . 'gui_Ou
15、tputFcn', untitled_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction unti
16、tled_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); function varargout = untitled_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output;(2)原始语音信号时域波形和频谱function pushbutton1_Callback(hObject, eventdata, handles)y,fs,bits=wavread(
17、9;C:UsersAdministratorDesktop音频信号.wav');%读取原始音频信号y=y(:,1);%只取单信道sound(y,fs,bits);%播放原始信号Y=fft(y);%对原始信号取傅里叶变换subplot(2,2,1:2);plot(y);title('原始信号时域波形');subplot(2,2,3);plot(abs(Y);title('原始信号幅频');subplot(2,2,4);plot(angle(Y);title('原始信号相频');(3)采样后语音信号的时域波形和频谱function pushb
18、utton2_Callback(hObject, eventdata, handles)y,fs,bits=wavread('C:UsersAdministratorDesktop音频信号.wav',50000 500000);%只取原信号的一部分,即时间区间50000 150000y=y(:,1);Y=fft(y,6001);%抽取6001点subplot(2,2,1:2);plot(y);title('采样信号时域波形');subplot(2,2,3);plot(abs(Y);title('采样信号幅频');subplot(2,2,4);pl
19、ot(angle(Y);title('采样信号相频');sound(y,fs,bits);%回放采样信号(4)对采样后的信号延时function pushbutton3_Callback(hObject, eventdata, handles)y,fs,bits=wavread('C:UsersAdministratorDesktop音频信号.wav',50000 500000);y=y(:,1);z=zeros(20000,1);y;%延迟3000Z=fft(z,6001);subplot(2,2,1:2);plot(z);title('延时后时域波形
20、');subplot(2,2,3);plot(abs(Z);title('延时后幅频');subplot(2,2,4);plot(angle(Z);title('延时后相频');sound(y,fs,bits);%回放延迟信号(5)对采样后的信号混响 function pushbutton4_Callback(hObject, eventdata, handles)y,fs,bits=wavread('C:UsersAdministratorDesktop音频信号.wav',50000 150000);y=y(:,1);z=zeros(3
21、000,1);y;y=y;zeros(3000,1);%补3000y1=y+z;%将原始信号与延迟信号相加,产生混响信号Y1=fft(y1,6001);subplot(2,2,1:2);plot(y1);title('混响的时域波形');subplot(2,2,3);plot(abs(Y1);title('混响的幅频');subplot(2,2,4);plot(angle(Y1);title('混响的相频');sound(y,fs,bits);%回放混响信号 (6)单回声滤波器程序设计function pushbutton5_Callback(h
22、Object, eventdata, handles)y,fs,bits=wavread('C:UsersAdministratorDesktop音频信号.wav',50000 500000);y=y(:,1);z=zeros(3000,1);y;y=y;zeros(3000,1);a=0.5;R=5000;%滤波器阶数设置,其值越高,回声越明显Bz1=1,zeros(1,R-1),a;%单回声滤波器系统函数分子Az1=(1);%单回声滤波器系统函数分母y2=filter(Bz1,Az1,y);%单回声滤波器系统函数 Y2=fft(y2,6001);h,w=freqz(Bz1,
23、Az1);%求设计的滤波器频谱subplot(3,2,1);plot(abs(h);title('单回声滤波器幅频响应');subplot(3,2,2); plot(angle(h);title('单回声滤波器相频响应');subplot(3,2,3:4);plot(y2);title('单回声滤波器时域图 ');subplot(3,2,5);plot(abs(Y2);title('单回声滤波器幅频 ');subplot(3,2,6);plot(angle(Y2);title('单回声滤波器相频 ');sound(
24、y2,fs,bits); (7)多重回声滤波器程序设计function pushbutton6_Callback(hObject, eventdata, handles)y,fs,bits=wavread('C:UsersAdministratorDesktop音频信号.wav',50000 500000);y=y(:,1);z=zeros(3000,1);y;y=y;zeros(3000,1);a=0.5;N=5;R=9000;%滤波器阶数设置,其值越高,回声越明显Bz1=1,zeros(1,N*R-1),-aN;%多重回声滤波器系统函数分子Az1=1,zeros(1,R-1
25、),-a;%多重回声滤波器系统函数分母y2=filter(Bz1,Az1,y);Y2=fft(y2,6001);h,w=freqz(Bz1,Az1);subplot(3,2,1);plot(abs(h);title('多重回声滤波器幅频响应');subplot(3,2,2); plot(angle(h);title('多重回声滤波器相频响应');subplot(3,2,3:4);plot(y2);title('多重回声滤波器时域图 ');subplot(3,2,5);plot(abs(Y2);title('多重回声滤波器幅频 ')
26、;subplot(3,2,6);plot(angle(Y2);title('多重回声滤波器相频 ');sound(y2,fs,bits); (8)无限个回声滤波器程序设计function pushbutton7_Callback(hObject, eventdata, handles)y,fs,bits=wavread('C:UsersAdministratorDesktop音频信号.wav',50000 500000);y=y(:,1);z=zeros(3000,1);y;y=y;zeros(3000,1);a=0.5;R=5000;%滤波器阶数设置,其值越高
27、,回声越明显Bz=0,zeros(1,R-1),1;%无限个回声滤波器系统函数分子Az=1,zeros(1,R-1),-a;%无限个回声滤波器系统函数分母y2=filter(Bz,Az,y);Y2=fft(y2,6001);h,w=freqz(Bz,Az);subplot(3,2,1);plot(abs(h);title('无限个回声滤波器幅频响应');subplot(3,2,2); plot(angle(h);title('无限个回声滤波器相频响应');subplot(3,2,3:4);plot(y2);title('无限个回声滤波器时域图 '
28、);subplot(3,2,5);plot(abs(Y2);title('无限个回声滤波器信号幅频 ');subplot(3,2,6);plot(angle(Y2);title('无限个回声滤波器信号相频 ');sound(y2,fs,bits); (9) 全通结构滤波器程序设计function pushbutton8_Callback(hObject, eventdata, handles)y,fs,bits=wavread('C:UsersAdministratorDesktop音频信号.wav',50000 500000);y=y(:,1)
29、;z=zeros(3000,1);y;y=y;zeros(3000,1);a=0.5;R=5000;%滤波器阶数设置,其值越高,回声越明显Bz1=a,zeros(1,R-1),1;%无限个回声滤波器系统函数分子Az1=1,zeros(1,R-1),a;%无限个回声滤波器系统函数分母h,w=freqz(Bz1,Az1);yy2=filter(Bz1,Az1,y);YY2=fft(yy2,6001);subplot(3,2,1);plot(abs(h);title('全通滤波器幅频响应');subplot(3,2,2); plot(angle(h);title('全通滤波器
30、相频响应');subplot(3,2,3:4);plot(yy2);title('全通结构时域图 ');subplot(3,2,5);plot(abs(YY2);title('全通结构幅频 ');subplot(3,2,6);plot(angle(YY2);title('全通结构相频 ');sound(yy2,fs,bits); 6 结果分析GUI设计界面对信号采样后,信号时域波形出现了离散化的分布,不像原始图像那样密集分布,频谱图也是同样的变换,幅度和频率都是根据采样区间变化的从时域图出延时是让原来的波形向右移动3000,频域的幅度发生
31、了变化。混响:在时域图看前面几乎没变化,后面的幅度有一定变化。在频谱图幅度变化很大,中间的上下相互抵消,两边的跳动很大。时域上形状大致相同,幅度有微小变化。频谱上也是滤波前后两边跳动变换较大,幅度变化较大。时域上滤波前的幅度比滤波后的数值大,形状上滤波后是连续的,滤波前是间断的频谱上变化两边上下跳的动变化,中间变化抵消时域上波形变得稀疏了,幅度相对变化较大。频谱上变化两边上下跳的动变化,中间变化抵消全通结构时域大致一样,滤波前比滤波后幅度有变化6000以后上下跳动抵消频域上变化的不为明显,幅度发生了变化。7 总结及心得体会 选择这段音频的原因:这段音频虽然只有15秒,但是它无伴奏音乐,因此处理
32、起来比较得心应手,且声音优美清晰 处理目的:基于matlab实现语音信号的延迟与混响 处理方式: 处理结果:利用matlab成功实现了语音信号的延迟与混响 通过此次课程设计,使我更加扎实的掌握了有关语音信号处理方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。 过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取,最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成
33、了,在设计中遇到了很多问题,最后我们大家的不懈努力下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可! 课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了一些matlab编程的常用指令,
34、同时也对matlab运用得更加得心应手,同时也和课上老师讲解的内容互相印证,能把书本上的知识转变为仿真结果,着实让我们很高兴。 回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。实验过程中
35、,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。 此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。8 参考资料1 彭启琮等,DSP技术的发展与应用,第二版,高等教育出版社,20072 张雄伟,DSP集成开发与应用实例,第1版,电子工业出版社,20023 杨述斌等,数字信号处理实践教程,第一版,华中科技大学出版社,20079 源代码function varargout = untitled(vararg
36、in)% UNTITLED M-file for untitled.fig% UNTITLED, by itself, creates a new UNTITLED or raises the existing% singleton*.% H = UNTITLED returns the handle to a new UNTITLED or the handle to% the existing singleton*.% UNTITLED('CALLBACK',hObject,eventData,handles,.) calls the local% function nam
37、ed CALLBACK in UNTITLED.M with the given input arguments.% UNTITLED('Property','Value',.) creates a new UNTITLED or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before untitled_OpeningFcn gets called. An% unrecognized property
38、name or invalid value makes property application% stop. All inputs are passed to untitled_OpeningFcn via varargin.% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".% See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify t
39、he response to help untitled % Last Modified by GUIDE v2.5 21-Dec-2012 21:01:58 % Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', untitled_OpeningFcn, . 'gui_OutputFcn
40、', untitled_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization
41、 code - DO NOT EDIT % - Executes just before untitled is made visible.function untitled_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure w
42、ith handles and user data (see GUIDATA)% varargin command line arguments to untitled (see VARARGIN) % Choose default command line output for untitledhandles.output = hObject; % Update handles structureguidata(hObject, handles); % UIWAIT makes untitled wait for user response (see UIRESUME)% uiwait(ha
43、ndles.figure1); % - Outputs from this function are returned to the command line.function varargout = untitled_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of
44、MATLAB% handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structurevarargout1 = handles.output; % - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% ev
45、entdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)y,fs,bits=wavread('C:UsersAdministratorDesktop音频信号.wav');%读取原始音频信号y=y(:,1);%只取单信道sound(y,fs,bits);%播放原始信号Y=fft(y);%对原始信号取傅里叶变换subplot(2,2,1:2);plot(y);title('原始信号时域波形
46、');subplot(2,2,3);plot(abs(Y);title('原始信号幅频');subplot(2,2,4);plot(angle(Y);title('原始信号相频'); % - Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a fu
47、ture version of MATLAB% handles structure with handles and user data (see GUIDATA)y,fs,bits=wavread('C:UsersAdministratorDesktop音频信号.wav',50000 500000);%只取原信号的一部分,即时间区间50000 150000y=y(:,1);Y=fft(y,6001);%抽取6001点subplot(2,2,1:2);plot(y);title('采样信号时域波形');subplot(2,2,3);plot(abs(Y);tit
48、le('采样信号幅频');subplot(2,2,4);plot(angle(Y);title('采样信号相频');sound(y,fs,bits);%回放采样信号 % - Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version
49、of MATLAB% handles structure with handles and user data (see GUIDATA)y,fs,bits=wavread('C:UsersAdministratorDesktop音频信号.wav',50000 500000);y=y(:,1);z=zeros(20000,1);y;%延迟3000Z=fft(z,6001);subplot(2,2,1:2);plot(z);title('延时后时域波形');subplot(2,2,3);plot(abs(Z);title('延时后幅频');subp
50、lot(2,2,4);plot(angle(Z);title('延时后相频');sound(y,fs,bits);%回放延迟信号 % - Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structu
51、re with handles and user data (see GUIDATA)y,fs,bits=wavread('C:UsersAdministratorDesktop音频信号.wav',50000 150000);y=y(:,1);z=zeros(3000,1);y;y=y;zeros(3000,1);%补3000y1=y+z;%将原始信号与延迟信号相加,产生混响信号Y1=fft(y1,6001);subplot(2,2,1:2);plot(y1);title('混响的时域波形');subplot(2,2,3);plot(abs(Y1);title(
52、'混响的幅频');subplot(2,2,4);plot(angle(Y1);title('混响的相频');sound(y,fs,bits);%回放混响信号 % - Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of M
53、ATLAB% handles structure with handles and user data (see GUIDATA)y,fs,bits=wavread('C:UsersAdministratorDesktop音频信号.wav',50000 500000);y=y(:,1);z=zeros(3000,1);y;y=y;zeros(3000,1);a=0.5;R=5000;%滤波器阶数设置,其值越高,回声越明显Bz1=1,zeros(1,R-1),a;%单回声滤波器系统函数分子Az1=(1);%单回声滤波器系统函数分母y2=filter(Bz1,Az1,y);%单回声
54、滤波器系统函数 Y2=fft(y2,6001);h,w=freqz(Bz1,Az1);%求设计的滤波器频谱subplot(3,2,1);plot(abs(h);title('单回声滤波器幅频响应');subplot(3,2,2); plot(angle(h);title('单回声滤波器相频响应');subplot(3,2,3:4);plot(y2);title('单回声滤波器时域图 ');subplot(3,2,5);plot(abs(Y2);title('单回声滤波器幅频 ');subplot(3,2,6);plot(angle
55、(Y2);title('单回声滤波器相频 ');sound(y2,fs,bits); % - Executes on button press in pushbutton6.function pushbutton6_Callback(hObject, eventdata, handles)% hObject handle to pushbutton6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and us
56、er data (see GUIDATA)y,fs,bits=wavread('C:UsersAdministratorDesktop音频信号.wav',50000 500000);y=y(:,1);z=zeros(3000,1);y;y=y;zeros(3000,1);a=0.5;N=5;R=9000;%滤波器阶数设置,其值越高,回声越明显Bz1=1,zeros(1,N*R-1),-aN;%多重回声滤波器系统函数分子Az1=1,zeros(1,R-1),-a;%多重回声滤波器系统函数分母y2=filter(Bz1,Az1,y);Y2=fft(y2,6001);h,w=freqz(Bz1,Az1);subplot(3,2,1);plot(abs(h);title('多重回声滤波器幅频响应');subplot(3,2,2); plot(angle(h);title(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年公路工程招投标代理合同
- 2024年净水器电商平台代理合同
- 2024年个体劳动者临时服务合同
- 2024年供暖与空调安装施工合同
- 2024年乳制品冷链物流合同样本
- 2024年创意共享保密协议
- 2024年中考冲刺班辅导合同
- 2024年出租车电召服务平台协议
- 2024年全球采购协议:物资与设备中英文对照
- 2024年五方合伙股权投资协议
- 《我国运动员在奥林匹克运动会取得的辉煌成绩》 课件
- 旅行社团队确认书三篇
- 海康2023综合安防工程师认证试题答案HCA
- 《超市水果陈列标准》
- 施美美的《绘画之道》与摩尔诗歌新突破
- 跌倒坠床PDCA循环管理降低住院患者跌倒坠床发生率
- 外研上册(一起)六年级知识汇总
- 大学生国家安全教育智慧树知到答案章节测试2023年广西科技大学
- 《2019版预防和治疗压力性损伤快速参考指南》简要分享
- 顶管基坑支护方案
- GB/T 7597-2007电力用油(变压器油、汽轮机油)取样方法
评论
0/150
提交评论