线性卷积与圆周卷积实验报告.doc_第1页
线性卷积与圆周卷积实验报告.doc_第2页
线性卷积与圆周卷积实验报告.doc_第3页
线性卷积与圆周卷积实验报告.doc_第4页
线性卷积与圆周卷积实验报告.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大连理工大学实验报告学院(系): 电子信息与电气工程学部 专业:电子信息工程(英语强化) 班级: 电英1001班姓 名: 刘志旋 学号: 201081510 组: _ 实验时间: 实验室: 实验台: 指导教师签字: 成绩: 实验二 电话拨号音的合成与识别五、实验数据记录和处理 在函数num1_OpeningFcn中定义全局变量handles.NUM实验程序如下: 1. 数字键1的代码 wl1=2*pi*697/8192; %数字1 的行频wh1=2*pi*1209/8192; %数字1 的列频n=1:410; % 每个数字用 410 个采样点表示 d1=sin(wl1*n)+sin(wh1*n); % 对应行频列频叠加 space=zeros(1,410); %410 个 0 模拟静音信号 phone=handles.NUM,d1; handles.NUM=phone, space; %将得到的820点存入全局变量handles.NUM中n1=strcat(get(handles.numshow,string),1); % 获取数字号码 set(handles.numshow,string,n1); % 显示号码 guidata(hObject, handles); %刷新wavplay(d1,8192); %按键音 其他的数字键同1,只需要修改其中的行列频和显示数字2. 删除键(*键)的代码wl1=2*pi*941/8192; %*键 的行频wh1=2*pi*1209/8192; %*键 的列频n=1:410; d1=sin(wl1*n)+sin(wh1*n);num=get(handles.numshow,string); %得到屏幕上的内容l=length(num); %得到长度n11=strrep(num,num,num(1:l-1); %删除最后的一个字符set(handles.numshow,string,n11); %显示现在的结果L=length(handles.NUM);handles.NUM=handles.NUM(1:L-820); %删除820点,该为要删除点的采样值guidata(hObject, handles);wavplay(d1,8192);3. 全部清除键(#键)的代码wl1=2*pi*941/8192;wh1=2*pi*1477/8192;n=1:410; % 每个数字用 410 个采样点表示 d1=sin(wl1*n)+sin(wh1*n); % 对应行频列频叠加 handles.NUM=; %将全局变量handles.NUM清空set(handles.numshow,string,); % 将显示清空 guidata(hObject, handles);wavplay(d1,8192);4. 识别键(receive 键)的代码z=row,column; % 确定数字 if z=4,2 phone=0; elseif z=1,1 phone=1; elseif z=1,2 phone=2; elseif z=1,3 phone=3; elseif z=2,1 phone=4; elseif z=2,2 phone=5; elseif z=2,3 phone=6; elseif z=3,1 phone=7; elseif z=3,2 phone=8; elseif z=3,3 phone=9; end%将整型数转化成字符 number=strcat(number,int2str(phone); end% 显示号码set(handles.shownum1,string,number); L=length(handles.NUM); n=L/820; number=zeros(1,n); for i=1:n j=(i-1)*820+1; d=handles.NUM(j:(j+410-1); % 截取出每个数字 f=fft(d,8192); % 以 N=2048 作 FFT 变换 a=abs(f); p=a.*a/8192; % 计算功率谱num(1)=find(p(1:1000)=max(p(1:1000); % 找行频 %找列频 num(2)=1000+find(p(1000:1700)=max(p(1000:1700); if (num(1) 730) row=1; % 确定行数 elseif (num(1) 810) row=2; elseif (num(1) 900) row=3; else row=4; end if (num(2) 1260) column=1; % 确定列数 elseif (num(2) 1400) column=2; else column=3; end5. 数字拨号音的频谱图产生代码a=handles.NUM(1:420);a=fft(a,8192);a=abs(a);figure(1)stem(a)title(第一个输入数字拨号音的频谱图)xlabel(频率 Hz),ylabel(幅度)figure(2)a=a(1:1700);stem(a)title(第一个输入数字拨号音的频谱图)xlabel(频率 Hz),ylabel(幅度)六、实验结果与分析 1GUI下的实验结果图 上面的六张图从左到右,从上到下分别是:运行程序后的界面、输入1008611后的界面、按1次*键(删除键)后的界面、按1次Receive(识别键)后的界面、按1次#键(清除键)后的界面、再按1次Receive(识别键)后的界面。 分析:输入按键,屏幕上显示相应的数字,并且能够听到按键音。按下删除键后,屏幕上最后一位数字删除,识别之后发现,被删除的信息未被显示,即删除正确。按下清除键后,屏幕信息全被清除,识别之后发现,被清除的信息未被显示,即清除正确。即,实验完成了电话拨号音的合成和识别。2. 数字拨号音的频谱图(取第一个输入数字音作频谱图,本图是数字1的频谱) 左边是以8192点做的频谱图,右图是以1700点做的频谱图。分析:看左图可以发现最大值出现在4个频点上,而按照程序应该只应在2个点处出现峰值,原因在于程序中画频谱图时用的是FFT快速算法,这是基于圆周卷积来算的,当横坐标的频点取足够多时,就可以看到它会周期延拓,并且sin(wt)在负频域内有值,这样这频点取值为8192点时就正好可以看到它的延拓周期。若取1700点,则得到右图,可以看到解得的两个频点与数字1拨号音音频接近,与实验预想一致。综上所诉,本次实验实现了电话拨号音的合成和识别,别从频谱上分析了其正确性,即实验完成。七、讨论、建议、质疑实验体会:本次实验我学会了GUI图形用户界面的基本设计,掌握了电话拨号音的合成和识别的原理以及现在的方法。实验中同样遇到很多问题:1. 错误的理解了全局变量,在每个数字键代码用handles.NUM=d1, space,以为这样就将每次读入的820点加入handles.NUM。后来在单步调试的时候发现handles.NUM的值是当前的820点,就意识到handles.NUM=d1, space是一个赋值,更改后调试正确。2. 删除键的屏幕显示删除用的是handles.numshow-1,以为这样可以实现,却报错了。查看老师讲义,发现可以用一个strrep函数,查看其用法知道strrep(num1,num2,num3)是将num3代替num1中的num2。使用这个函数就解决了这个问题。后来由删除的思想,觉得用n11=num(1:l-1)也可以实现,运行发现也可以,这样就可以不用strrep函数。3. 识别时,屏幕中始终没有显示,单步调试时程序停在了set显示一行,觉得是显示屏用错了,然而静动态的都没有解

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论