DTMF电话中的拨号信号发生与检测系统仿真设计说明_第1页
DTMF电话中的拨号信号发生与检测系统仿真设计说明_第2页
DTMF电话中的拨号信号发生与检测系统仿真设计说明_第3页
DTMF电话中的拨号信号发生与检测系统仿真设计说明_第4页
DTMF电话中的拨号信号发生与检测系统仿真设计说明_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、. . . . 燕山大学课 程 设 计 说 明 书题目:DTMF中的拨号信号发生与检测系统仿真设计学院(系): 电气工程学院 年级专业: 09级仪表(2)班 学 号: 4 学生: 吴季哲 指导教师: 平 吴晓光 教师职称: 教授 讲师 32 / 34燕山大学课程设计(论文)任务书院(系):电气工程学院 基层教学单位:自动化仪表系学 号4学生吴季哲专业(班级)09级仪表2班设计题目DTMF中的拨号信号发生与检测系统仿真设计设计技术参数采样频率是8000Hz;每125ms输出一个样本;所用频率:697Hz、770Hz、852Hz、942Hz、1209Hz、1336Hz、1477Hz、633Hz设计

2、要求1、设计一个拨号模拟系统2、设计一个检测系统3、绘制接收到信号的频谱图4、撰写设计报告工作计划周一,设计一个拨号模拟系统;周二,设计一个检测系统;周三、四,绘制接收到信号的频谱图;周五,撰写设计报告。参考资料数字信号处理(第三版) 高西全,丁玉美编著数字信号处理教程 第三版 程佩青编著数字信号处理原理与应用 平 王娜 林洪彬 编著指导教师签字平 吴晓光基层教学单位主任签字平说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。2012年6 月20 日 燕山大学课程设计评审意见表指导教师评语:成绩:指导教师:年 月 日答辩小组评语:成绩:组长:年 月 日课程设计总成绩:答辩小组成员签

3、字:年 月 日摘 要双音多频(Dual Tone Multi Frequency, DTMF)信号是音频中的拨号信号,由美国AT&T贝尔公司实验室研制,并用于网络中。这种信号制式具有很高的拨号速度,且容易自动检测识别,很快就代替了原有的用脉冲计数方式的拨号制式。这种双音多频信号制式不仅用在网络中,还可以用于传输十进制数据的其他通信系统中,用于电子和银行系统中。这些系统中用户可以用发送DTMF信号选择语音菜单进行操作。 DTMF信号系统是一个典型的小型信号处理系统,它要用数字方法产生模拟信号并进行传输,其中还用到了D/A变换器;在接收端用A/D变换器将其转换成数字信号,并进行数字信号处理

4、。本文主要介绍用MATLAB在计算机上对双音多频的信令产生与检测接收系统进行了仿真测试。关键词:双音多频,数字信号处理,傅里叶变换;目 录摘要21.绪论41.1 引言41.2 数字信号简介41.3 数字滤波器61.4 频率分析71.4.1 傅里叶级数与傅里叶变换 7 1.4.2 Z变换与系统函数 81.4.3 离散系统傅里叶变换(DFT)92.双音多频(DTMF)通信系统6 2.1 双音多频(DTMF)信号简介10 2.2 双音多频(DTMF)信号的产生10 2.3 双音多频(DTMF)信号的检测115.双音多频(DTMF)系统的Matlab实现 165.1 Matlab简介 165.2 GU

5、I界面介绍175.3 双音多频(DTMF)系统的仿真19第4章 学习心得20参考文献21程序清单221 绪论1.1 引言双音多频(Dual Tone Multi Frequency,DTMF)信号,由美国AT&T贝尔实验室研制,用于音频网络中的拨号信号。一方面这种信号具有非常高的拨号速度,另一方面它便于自动检测识别与业务的拓展,所以很快代替了原有的脉冲计数方式的拨号形式。自1876年美国贝尔发明以来,交换技术发展主要经历了三个阶段:人工交换、机电交换、电子交换。早在1878年就出现了人工供电制交换机,它借助话务员进行话务连接。15年后步进制的交换机问世,这种交换机属于“直接控制”方式,

6、用户通过话机拨号脉冲直接控制步进接续器做升降和旋转动作。从而自动完成用户间的接续。这种交换机虽然实现了自动接续,但存在着速度慢、效率低、杂音大与机械磨损严重等缺点。直到1938年发明了纵横制交换机由直接控制过渡到间接控制方式,随后又出现了电子交换机与程控交换机等。用户的拨号脉冲不再直接控制接线器动作,而先由记发器接收、存储,然后通过标志器驱动接线器,以完成用户间接续。由于标志器记取的是标识信号,所以可以不采用不稳定的脉冲计数方式,逐步发展到数字标识,所以快速、稳定灵活的DTMF音频拨号方式取代了脉冲计数方式。本文主要阐述GOERTZEL算法在双音拨号系统中的应用,并利用Matlab的强大功能,

7、用软件实现DTMF(双音多频)信号的检测。1.2 数字信号简介信号是反映消息的物理量,是消息的表现形式。由于非电的物理量可以通过各种传感器较容易地转换成电信号,而电信号又容易传送和控制,所以使其成为应用最广的信号。电信号是指随着时间而变化的电压或电流,因此在数学描述上可将它表示为时间的函数,并可画出其波形。信息可以通过电信号进行传送、交换、存储、提取等。电信号的形式是多种多样的,可以从不同的角度进行分类。根据信号的机性可以分为确定信号和随机信号;根据信号的周期性可分为周期信号和非周期信号;根据信号的连续性可以分为连续时间信号和离散信号;在电子线路中将信号分为模拟信号和数字信号。我们每天遇到的信

8、号,大部分都是模拟信号。离散时间信号只被定义在一种特定的时间瞬间集合上,表现为具有连续数值围的数值序列。而数字信号在时间上和幅值上都有离散的数字。因此在实际的操作中,数字信号更容易处理。随着数字电子技术的发展,在语音处理、通信控制、图象处理等领域DSP(Digital Signal Processor数字信号处理器 )也得到了越来越广泛的应用。数字通信抗干扰能力强、无噪声积累,由于数字信号的幅值为有限个离散值(通常取两个幅值),在传输过程中虽然也受到噪声的干扰,但当信噪比恶化到一定程度时,即在适当的距离采用判决再生的方法,再生成没有噪声干扰的和原发送端一样的数字信号,所以可实现长距离高质量的传

9、输。较之传统的方法,数字信号处理系统自身有着无可比拟的优点:(1)便于加密处理信息传输的安全性和性越来越重要,数字通信的加密处理的比模拟通信容易得多,以话音信号为例,经过数字变换后的信号可用简单的数字逻辑运算进行加密、解密处理。(2)便于存储、处理和交换数字通信的信号形式和计算机所用信号一致,都是二进制代码,因此便于与计算机联网,也便于用计算机对数字信号进行存储、处理和交换,可使通信网的管理、维护实现自动化、智能化。(3)设备便于集成化、微型数字通信采用时分多路复用,不需要体积较大的滤波器。设备部分电路是数字电路,可用大规模和超大规模集成电路实现,因此体积小、功耗低。(4)便于构成综合数字网和

10、综合业务数字网采用数字传输方式,可以通过程控数字交换设备进行数字交换,以实现传输和交换的综合。另外,业务和各种非话业务都可以实现数字化,构成综合业务数字网。(5)占用信道频带较宽一路模拟的频带为4kHz带宽,一路数字约占64kHz,这是模拟通信目前仍有生命力的主要原因。随着宽频带信道(光缆、数字微波)的大量利用以与数字信号处理技术的发展,数字的带宽问题已不是主要问题了。1.3 数字滤波器数字滤波器由数字加法器、单位延时和常数乘法器组成的一种算法或装置。数字滤波器的功能是对输入离散信号的数字代码进行运算处理,即把输入序列通过一定的运算变换成输出序列,以达到改变信号频谱的目的。数学公示表示如下:

11、(1.3-1)通常可以用两种方法实现数字滤波器:一种方法是把滤波器所完成的运算编成程序并让计算机执行,也就是采用就算机软件实现;另一种方法是设计专用的数字硬件、专用的数字信号处理器或采用通用的数字信号处理器来实现。存在着两种数字滤波器的的基本类型:无限长单位冲击响应(IIR)滤波器和有限长单位冲击响应(FIR)滤波器。它们的系统函数分别为:(1.3-2)(1.3-3)式(1.3-2)中的H(Z)称为N阶IIR滤波器函数式,(1.3-3)中的H(Z)称为N-1阶FIR滤波器函数。无限长单位冲激响应(IIR)滤波器的单位冲激响应h(n)是无限长的;系统函数H(Z)在有限Z平面(0Z)上有极点存在;

12、结构上存在着输出到输入的反馈,也就是结构上是递归型的。1.4 频率分析 任何给定信号的频率分析,都包含着时域信号向其频率分量的转换。之所以要在频域对信号进行描述,因为在实现信号处理时,通常都利用以频率响应形式描述的系统。而这些频域信号处理概念时傅立叶变换是必不可少的。同时Z变换对进行数字系统分析和实现也极其重要。1.4.1 傅立叶级数与傅立叶变换任何周期信号X(t)均可以表示为无穷多个谐波调谐相关的正弦波和复指数之和。具有周期T0(秒)周期信号x(t),其基本的数学表达式为具有系列定义的傅立叶级数:(1.4.1-1)式中Ck为傅立叶级系数,第k个傅立叶系数Ck可以表示为(1.4.1-2)用周期

13、信号的傅立叶级数通过极限的方法导出的非周期信号的频谱表示式,称为傅立叶变换:傅立叶逆变换: (1.4.1-3)傅立叶正变换: = (1.4.1-4)1.4.2 Z变换与系统函数对于离散时间系统来说,与拉普拉斯对应的变换是是Z变换,Z变换提供了离散时间信号和系统的频域描述,并为数字滤波器的设计和实现,提供了有力的工具。序列x(n)的Z变换定义为:(1.4.2-1)式中z是一个复变量,定义中对n求和是在和之间求和,称为边Z变换。还有一种称为单边Z变换的定义,如下式: (1.4.2-2)将系统的单位脉冲响应h(n)进行Z变换,得到H(z),一般称H(z)为系统的系统函数,它表征了系统的频域特性。对N

14、阶差分方程进行Z变换,得到系统函数的一般表示式(1.4.2-3)令Z=ej即得系统的传输函数H(ej)。1.4.3 离散系统傅立叶变换(DFT)离散傅立叶变换是针对有限长序列或周期序列从存在的,相当把序列的连续傅立叶变换加以抽样,频率的离散化造成时间函数也呈周期,故级数应限制在一个周期。令,则,我们即可得到离散傅立叶变换对为:(1.4.31)(1.4.32)其中表示有限长序列的抽样点数,或周期序列一个周期的抽样点数。2 双音多频(DTMF)通信系统2.1 双音多频(DTMF)信号过去的拨号时靠脉冲计数确定09这10个数字的,拨号速度慢,也不能扩展上网其他服务功能。现在均采用双音拨号。每一位由两

15、个不同的单音频组成,所有的频率可分成高频带和低频带两组。每一位由一个高频信号和一个低频信号叠加形成,DTMF信号有16个编码。一般情况下,声音信号很难造成对DTMF接收器的错误触发。中的双音多频信号有两个作用:用拨号信号去控制交换机接通被叫的用户机;控制机的各种动作,如播放留言、语音信箱等。2.2 双音多频(DTMF)信号的产生DTMF编码器基于两个二阶数字正弦波振荡器,一个用于产生行频,一个用于产生列频。典型的DTMF信号频率围是7001700Hz,选取8000Hz作为采样频率,DTMF双音频信号由两个二阶数字正弦振荡器产生,一个用来产生行音频信号,另一个产生列音频信号。在键盘上的每次按键,

16、会产生式(2.2-1)表示的两个音调之和。规定用8KHz对DTMF信号进行采样,采样后得到时域离散信号为(2.2-1)两个频率f1,f2唯一确定了被按压的键。具体数字对应的两个频率如表2.2.1所示。表2-1 DTMF拨号频率(第四列常被省略)频低频高1209Hz1336Hz1477Hz633Hz697Hz123A770Hz456B852Hz789C942Hz*0#D形成上面序列的方法有两种,即计算法和查表法。用计算法求正弦波的序列值容易,但实际中要占用一些计算时间,影响运行速度。查表法是预先将正弦波的各序列值计算出来,寄存在存储器中,运行时只要按顺序和一定的速度取出便可。这种方法要占用一定的

17、存储空间,但是速度快。因为采样频率是8000Hz,因此要求每125ms输出一个样本,得到的序列再送到D/A变换器和平滑滤波器,输出便是连续时间的DTMF信号。DTMF信号通过线路送到交换机。2.3双音多频(DTMF)信号的检测在接收端,要对收到的将收到的双音多频信号进行检测,即检测两个正弦波的频率,以判断其对应的十进制数字或者符号。用数字方法进行检测,需要将接收到的模拟音频信号进行A/D变换,恢复为数字信号,然后检测其中的音频频谱来确定所发送的数字。检测方法有两种,一种是用一组滤波器来提取所需频率,判断对应的数字或符号;另一种是用快速傅立叶变换(FFT)算法的DFT对双音多频信号进行频谱分析,

18、有信号的幅度谱,判断信号的两个频率,最后确定对应的数字或符号。还有一种Goertzel算法更合适,但本文没有做详细介绍,有兴趣的可以查阅资料。由上面可以知道一个DTMF信号是由两个不通频率f1和f2的正弦波组成,它可以用下式表示(2.3-1)我们可以考虑通过离散傅立叶变换进行信号的频谱分析来检测离散的双音多频码。这是因为只有时域与频域都是离散的情况下,才能适合于在计算机上运算;也就是周期的离散时间信号与离散频率间的变换对。周期性离散时间信号x(n)的离散傅立叶变换周期性离散频率函数X(k)两相邻谱线分量之间的角频率增量与周期之间的关系可表示为,代表信号的基频。取样频率与取样周期T的关系是取样角

19、频率T为时域取样间隔,在一个周期取样点数为N。在自变量为t与f的情况下,在一个时域中对函数进行取样,两取样点间增量的倒数,必是另一个域中函数的周期。现序列的周期为NT,所以对频谱取样的间距是。以数字频率表示时,则频谱间距是k0,1,N1令并称之为因子。离散傅立叶变换(DFT)可写成如下形式:,0 kN1(2.3-2)DFT的表达式可以直接写成:,k0,1,N1( 2.3-3)一般来说,x(n)和都是复数,X(k)也是复数,每计算一个X(k)值,需要N次复数乘法(x(n)与相乘)以与(N1)次复数加法。而X(k)一共有N个点(k从0取到N1),所以完成整个DFT运算总共需要次复数乘法与N(N1)

20、次复数加法。复数运算实际上是由实数运算来完成的,因此上式可写成: (2.3-4)由此可见,一次复数乘法需用四次实数乘法和两次实数加法;一次复数加法则需两次复数加法。因而每运算一个需要4N次复数乘法和2N2(N-1)=2(2N-1)次实数加法。所以,直接计算DFT,乘法次数和加法次数都是和成正比的,当N很大时,运算量是很可观的,例如,当N8时,DFT需64次复数乘法,而当N1024时,DFT所需复数乘法为1,048,576次,即一百多万次复数乘法运算,这对实时性很强的信号处理来说,对计算速度的要求太高了。因而需要改进对DFT的计算方法,以大大减少运算次数。仔细观察DFT的运算量可以看出,利用系数

21、的以下固有特性,可以减少DFT的运算量。(1)的共轭对称性:(2)的周期性:(3)的可约性:由此得出,这样,(1)利用这些特性,使DFT运算中有些项可以合并;(2)利用的周期性和对称性,可以将长序列的DFT分解为短序列的DFT。而前面已经说到,DFT的运算量使与成正比的,所以N越小越有利,因而小点数的DFT比大点数的DFT的运算量要小。基于这样的思路,快速傅立叶变换(FFT)发展起来了。如果按时间抽取的FFT算法,系统的运算量是,运算量明显比DFT运算量减少。但它有一个缺点,需要全部抽样数据到达时,才能进行计算;不太适合双音多频信号频谱的计算,满足不了双音拨号系统实时性的要求。有一种DMFT的

22、特殊算法Goertzel算法,更适合适合双音多频信号频谱的计算。这篇文章介绍的是用快速傅里叶算法实现的。5 双音多频(DTMF)系统的Matlab实现5.1 Matlab简介MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以与交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以与非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以与必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。M

23、ATLAB 产品族可以用来进行以下各种工作: 数值分析 数值和符号计算 工程与科学绘图 控制系统的设计与仿真 数字图像处理 技术 数字信号处理 技术 通讯系统设计与仿真 财务与金融工程MATLAB 的应用围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以与计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域特定类型的问题。它有如下的特点:(1)功能强的数值运算在MATLAB环境中,有超过500种数学、统计、科学与工程方面的函数可使用,函数的标示自然,使得问

24、题和解答像数学式子一般简单明了,让使用者可全力发挥在解题方面,而非浪费在电脑操作上。(2)先进的资料视觉化功能 MATLAB的物件导向图形架构让使用者可执行视觉数据分,并制作高品质的图形,完成科学性或工程性图文并茂的文章。(3)高阶但简单的程式环境作为一种直译式的程式语言,MATLAB容许使用者在短时间写完程式,所花的时间约为用 FORTRAN 或 C 的几分之一,而且不需要编译(compile)与联结 (link) 即能执行,同时包含了更多与更容易使用的建功能。(4)开放与可延伸的架构MATLAB容许使用者接触它大多数的数学原始码,检视运算法,更改现存函数,甚至加入自己的函数使 MATLAB

25、成为使用者所须要的环境。(5)丰富的程式工具箱MATLAB的程式工具箱融合了套装前软体的优点,与一个灵活的开放但容易操作之环境,这些工具箱提供了使用者在特别应用领域所需之许多函数。现有工具箱有:符号运算(利用Maple V的计算核心执行)、影像处理、统计分析、讯号处理、神经网路、模拟分析、控制系统、即时控制、系统确认、强建控制、弧线分析、最佳化、模糊逻辑、mu分析与合成、化学计量分析。因为有了这些工具箱,大量繁杂的数学运算和分析可通过调用MATLAB函数直接求解,大大提高了编程效率,其程序编译和执行速度远远超过了BASIC、FORTRAN和C等语言。5.2 GUI界面介绍GUI的广泛应用是当今

26、计算机发展的重大成就之一,他极方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。 MATLAB中拥有GUI界面的功能,可以将想要实现的效果通过GUI界面展现出来,在MATLAB主界面,通过路径File-New-GUI打开GUI界面的编辑窗口,将需要的按钮拖出,双击可进行编辑。右击找到Callback,在该函数下编写该按钮要实现的功能,可实现该按钮的功能。5.3 双音多频(DTMF)系统的仿真DTMF信号的产生与识别仿真实验在

27、MATLAB环境下进行,编写仿真程序,运行程序,送入,程序自动产生每一位数字相应的DTMF信号,产生频率普图,并送出双频声音,再用DFT进行谱分析,在GUI界面上显示每一位数字的DTMF信号的DFT幅度谱。(如下图)6 学习心得本文采用快速傅里叶(FFT)算法,实现了对双音多频信号的检测,在MATLAB环境下,对双音多频信号的解码检测过程进行了模拟仿真。本文只是完成了双音多频拨号系统的软件仿真,如何实现高性价比的硬件系统是下一步需要研究和完成的工作。在做MATLAB界面,做好以后同时会产一个M文件,只要把代码编写在对应的控件中即可以方便的实现仿真。试验结果表明基于MATLAB 的DTMF 编解

28、码具有速度快、精度高、稳定性好以与便于灵活应用等特点。而利用MATLAB语言,可以较好地、快速地进行算法的仿真。本文是在老师的悉心指导下完成的。每当有什么不解之处,老师总是给予详细的解答,而老师对于我们未来的生活更是给予了耐心的指导,并提出了宝贵的建议,使我终身受教。在整个设计过程中,我学习到了许多东西,同时也锻炼了独立思考和设计能力,使自己明白了学习是一个长期积累的过程,在以后的工作和生活中都应该不断学习,提高自身的知识水平和综合素质。相信此次课程设计让我所体会到的人生哲理,必将成为今后生活和学习中的巨大财富,使我终生受益。在此深切的感这些帮助,鼓励和关心过我的老师们!参考文献数字信号处理(

29、第三版) 高西全,丁玉美编著数字信号处理教程 第三版 程佩青 编著数字信号处理原理与应用 平 王娜 林洪彬 编著程序清单function varargout = untitled(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', untitled_OpeningFcn, . 'gui_OutputFcn', untitled_Output

30、Fcn, . '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 untitled_OpeningFcn(hObject, event

31、data, handles, varargin)handles.output = hObject; guidata(hObject, handles);function varargout = untitled_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output;function pushbutton1_Callback(hObject, eventdata, handles)%按键4对应功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin

32、(2*pi*n*f1(2)/8000) + sin(2*pi*n*f2(1)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel('k');ylabel('|X(k)|') fftx=abs(fft(x); axes(handles.axes2); N=length(x); t=n/N*8000; plot(t,fftx)%grid;xlabel('k');ylabel('|X(k)|') set(handles.text5,'string

33、9;,4) num=get(handles.edit7,'string');n=length(num);if n>=11; errordlg('数字框已满!');set(handles.edit7,'string','');else nu=strcat(get(handles.edit7,'string'),get(handles.pushbutton1,'string');set(handles.edit7,'string',nu);endfunction pushbutto

34、n7_Callback(hObject, eventdata, handles)%按键#对应功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(4)/8000) + sin(2*pi*n*f2(3)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel('k');ylabel('|X(k)|') fftx=abs(fft(x); axes(handles.axes2); N=length(x)

35、; t=n/N*8000;plot(t,fftx) set(handles.text5,'string','#') num=get(handles.edit7,'string');n=length(num);if n>=11; errordlg('数字框已满!');set(handles.edit7,'string','');else nu=strcat(get(handles.edit7,'string'),get(handles.pushbutton7,'strin

36、g');set(handles.edit7,'string',nu);end function pushbutton2_Callback(hObject, eventdata, handles)%按键7对应功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(3)/8000) + sin(2*pi*n*f2(1)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel('k');ylabe

37、l('|X(k)|') fftx=abs(fft(x); axes(handles.axes2); N=length(x); t=n/N*8000; plot(t,fftx)%grid;xlabel('k');ylabel('|X(k)|') set(handles.text5,'string',7) num=get(handles.edit7,'string');n=length(num);if n>=11; errordlg('数字框已满!');set(handles.edit7,'

38、;string','');else nu=strcat(get(handles.edit7,'string'),get(handles.pushbutton2,'string');set(handles.edit7,'string',nu);endfunction pushbutton3_Callback(hObject, eventdata, handles)%按键6对应功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(2)

39、/8000) + sin(2*pi*n*f2(3)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel('k');ylabel('|X(k)|') fftx=abs(fft(x); axes(handles.axes2); N=length(x); t=n/N*8000; plot(t,fftx)%grid;xlabel('k');ylabel('|X(k)|') set(handles.text5,'string',6) num=get

40、(handles.edit7,'string');n=length(num);if n>=11; errordlg('数字框已满!');set(handles.edit7,'string','');else nu=strcat(get(handles.edit7,'string'),get(handles.pushbutton3,'string');set(handles.edit7,'string',nu);endfunction pushbutton4_Callback(h

41、Object, eventdata, handles)%按键5对应功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(2)/8000) + sin(2*pi*n*f2(2)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel('k');ylabel('|X(k)|') fftx=abs(fft(x); axes(handles.axes2); N=length(x); t=n/N*8000;

42、 plot(t,fftx)%grid;xlabel('k');ylabel('|X(k)|') set(handles.text5,'string',5) num=get(handles.edit7,'string');n=length(num);if n>=11; errordlg('数字框已满!');set(handles.edit7,'string','');else nu=strcat(get(handles.edit7,'string'),get(ha

43、ndles.pushbutton4,'string');set(handles.edit7,'string',nu);endfunction pushbutton5_Callback(hObject, eventdata, handles)%按键8对应功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(3)/8000) + sin(2*pi*n*f2(2)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%gri

44、d;xlabel('k');ylabel('|X(k)|') fftx=abs(fft(x); axes(handles.axes2); N=length(x); t=n/N*8000; plot(t,fftx)%grid;xlabel('k');ylabel('|X(k)|') set(handles.text5,'string',8) num=get(handles.edit7,'string');n=length(num);if n>=11; errordlg('数字框已满!&#

45、39;);set(handles.edit7,'string','');else nu=strcat(get(handles.edit7,'string'),get(handles.pushbutton5,'string');set(handles.edit7,'string',nu);endfunction pushbutton6_Callback(hObject, eventdata, handles)%按键9对应功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0

46、:1023; x = sin(2*pi*n*f1(3)/8000) + sin(2*pi*n*f2(3)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel('k');ylabel('|X(k)|') fftx=abs(fft(x); axes(handles.axes2); N=length(x); t=n/N*8000; plot(t,fftx)%grid;xlabel('k');ylabel('|X(k)|') set(handles.text5,

47、'string',9) num=get(handles.edit7,'string');n=length(num);if n>=11; errordlg('数字框已满!');set(handles.edit7,'string','');else nu=strcat(get(handles.edit7,'string'),get(handles.pushbutton6,'string');set(handles.edit7,'string',nu);endfunc

48、tion pushbutton8_Callback(hObject, eventdata, handles)%按键0对应功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(4)/8000) + sin(2*pi*n*f2(2)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel('k');ylabel('|X(k)|') fftx=abs(fft(x); axes(handles.axes2

49、); N=length(x); t=n/N*8000; plot(t,fftx)%grid;xlabel('k');ylabel('|X(k)|') set(handles.text5,'string',0) num=get(handles.edit7,'string');n=length(num);if n>=11; errordlg('数字框已满!');set(handles.edit7,'string','');else nu=strcat(get(handles.edi

50、t7,'string'),get(handles.pushbutton8,'string');set(handles.edit7,'string',nu);endfunction pushbutton9_Callback(hObject, eventdata, handles)%按键*对应功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(4)/8000) + sin(2*pi*n*f2(1)/8000); sound(x,8000); axes(ha

51、ndles.axes1); plot(n,x)%grid;xlabel('k');ylabel('|X(k)|') fftx=abs(fft(x); axes(handles.axes2); N=length(x); t=n/N*8000; plot(t,fftx)%grid;xlabel('k');ylabel('|X(k)|') set(handles.text5,'string','*') num=get(handles.edit7,'string');n=length(num

52、);if n>=11; errordlg('数字框已满!');set(handles.edit7,'string','');else nu=strcat(get(handles.edit7,'string'),get(handles.pushbutton9,'string');set(handles.edit7,'string',nu);endfunction pushbutton10_Callback(hObject, eventdata, handles)%按键2对应功能f1=697,77

53、0,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(1)/8000) + sin(2*pi*n*f2(2)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel('k');ylabel('|X(k)|') fftx=abs(fft(x); axes(handles.axes2); N=length(x); t=n/N*8000; plot(t,fftx)%grid;xlabel('k');ylabe

54、l('|X(k)|') set(handles.text5,'string',2) num=get(handles.edit7,'string');n=length(num);if n>=11; errordlg('数字框已满!');set(handles.edit7,'string','');else nu=strcat(get(handles.edit7,'string'),get(handles.pushbutton10,'string');set(handles.edit7,'string',nu);endfunct

温馨提示

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

评论

0/150

提交评论