dtmf信号系统的matlab仿真毕业设计论文(编辑修改稿)内容摘要:

)8000/2s in()8000/2s in()(21 nfnfnx   () 两个频率 f1,f2 唯一确定了被按压的键。 具体数字对应的两个频率如表 所示。 6 表 21 DTMF拨号频率 (第四列常被省略) 1209Hz 1336Hz 1477Hz 633Hz 697Hz 1 2 3 A 770Hz 4 5 6 B 852Hz 7 8 9 C 942Hz * 0 D 形成上面序 列的方法有两种,即计算法和查表法。 用计算法求正弦波的序列值容易,但实际中要占用一些计算时间,影响运行速度。 查表法是预先将正弦波的各序列值计算出来,寄存在存储器中,运行时只要按顺序和一定的速度取出便可。 这种方法要占用一定的存储空间,但是速度快。 因为采样频率是 8000Hz,因此要求每 125ms 输出一个样本,得到的序列再送到 D/A 变换器和平滑滤波器,输出便是连续时间的 DTMF 信号。 DTMF 信号通过电话线路送到交换机。 双音多频( DTMF)信号的 检测 在接收端, 要对收到的 将收到的 双音多频信号进行检测,即检测 两个 正弦波的频率,以判断其对应的十进制数字或者符号。 用数字方法进行检测,需要将接收到的 模拟音频信号进行 A/D 变换,恢复为数字信号,然后检测其中的音频频谱来确定所发送的数字。 检测方法有两种,一种是 用一组滤波器来提取所需频率 ,判断对应的数字或符号;另一种是用 快速傅立叶变换( FFT)算法的 DFT 对双音多频信号进行频谱分析 , 有信号的幅度谱,判断信号的两个频率,最后确定对应的数字或符号。 以下章节对两种方法进行分析并对 Goertzel 算法进行详细的推导。 由上面可以知道一个 DTMF 信号是由两个不通频率 f1 和 f2 的正弦波 组成,它可以用下式表示 )8000/2s in()8000/2s in()( 21 nfnfnx   () 7 我们可以考虑通过离散傅立叶变换进行信号的频谱分析来检测离散的双音 高 频 低 频 多频码。 这是因为只有时域及频域都是离散的情况下,才能适合于在计算机上运算;也就是周期的离散时间信号与离散频率间的变换对。 周期性离散时间信号 x( n) 的离散傅立叶变换-周期性离散频率函数 X( k)两 相 邻 谱线 分 量之 间 的角 频 率增 量 与周 期 pt 之 间 的 关系 可表 示 为Ft p  212  , ptF 1 代表信号的基频。 取样频率 sf 与取样周期 T 的关系是 Tfs 1 取样角频率 T2 T 为时域取样间隔 ,在一个周期内取样点数为 N。 在自变量为 t 及 f 的情况下,在 一个时域中对函数进行取样,两取样点间增量的倒数,必是另一个域中函数的周期。 现序列的周期为 NT,所以对频谱取样的间距是 NT1。 以数字频率表示时,则频谱间距是 kN 20  k= 0, 1, …… , N- 1 令 NjNW2 并称之为 NW 因子。 离散傅立叶变换 ( DFT) 可写成如下形式:  10 )()]([)( Nn knNWnxnxD F TkX , 0 ≤k≤N- 1 () DFT 的表达式可以直接写成:   10 2)()( Nn NknjnxkX , k= 0, 1, …… , N- 1 ( ) 一般来说, x( n) 和 nkNW 都是复数, X( k) 也是复数,每计算一个 X( k) 值,需要 N 次复数乘法 (x( n) 与 nkNW 相乘 )以及 (N- 1)次复数加法。 而 X( k) 一共有 N 个点( k 从 0取到 N- 1),所以完成整个 DFT 运算总共需要 2N 次 8 复数乘法及 N( N- 1) 次复数加法。 复数运算实际上是由实数运算来完成的,因此上式可写成:  10 )()( Nn nkNWnxkX }][]R e [}{)]([)](R e [{10 nkNNn nkN WmjWnxmjnx   ]}R e [)]([][)](( R e [])[)]([]R e [)]({ ( R e [10nkNnkNNnnkNnkNWnxmWmnxjWmnxmWnx  () 由此可见,一次复数乘法需用四次实数乘法和两次实数加法;一次复数加法则需两次复数加法。 因而每运算一个需要 4N 次复数乘法和 2N+ 2( N1) =2(2N1)次实数加法。 所以,直接计算 DFT,乘法次数和加法次数都是和 2N 成正比的,当 N很大时,运算量是很可观的,例如,当 N= 8 时, DFT 需 64 次复数乘法,而当N= 1024 时, DFT 所需复数乘法为 1, 048, 576 次,即一百多万次复数乘法运算,这对实时性很强的信号处理来说,对计算速度的要求太高了。 因而需要改进对 DFT 的计算方法,以大大减少运算次数。 仔细观察 DFT 的运算量可以看出,利用系数的以下固有特性,可以减少 DFT 的运算量。 (1) nkNW 的 共轭 对称性:   )()( knNknNnNKN WWW (2) nkNW 的周期性: )()( NknNkNnNnkN WWW   (3) nkNW 的可约性: mnk mNm n kmNnkN WWW // 由此得出 nkNknNNkNnN WWW   )()( , 12 NNW , kNNkN WW  )2( 这样,( 1)利用这些特性,使 DFT运算中有些项可以合并;( 2)利用 nkNW 的周期性和对称性,可以将长序列的 DFT 分解为短序列的 DFT。 而前面已经说到,DFT 的运算量使与 2N 成正比的,所以 N 越小越有利,因而小点数的 DFT 比大 9 点数的 DFT 的运算量要小。 基于这样的思路,快速傅立叶变换( FFT)发展起来了。 如果按时间抽取的FFT 算法,系统的运算量是 NN 2log ,运算量明显比 DFT运算 量减少。 但它有一个缺点,需要全部抽样数据到达时,才能进行计算;不适合双音多频信号频谱的计算,满足不了双音拨号系统实时性的要求。 因此开发出了适合于 DMFT 的特殊算法- Goertzel 算法。 10 3 戈泽尔 (Goertzel)算法 戈泽尔 (Goertzel)算法原理 戈泽尔算法利用 DFT 中的旋转因子 nkNW 的周期性,将 DFT 的运算转换成一种线性滤波运算。 下面推导戈泽尔算法的计算公式和实现结构。 假设长度为 N 的序列 x( n) 的 N 点 DFT 用 X( k) 表示,因为12)2(  eeW kkNNjkNN  ( ) 因此     10 )(10 )()()( Nn nNkNNn knNkNN WWW nxnxkX k=0,1,12,„ ,N1 () 按照上式定义序列   10 )()()( Nm mnkNk Wy mxn ( ) 这个方程可以解释为有限长序列 x(n), 10  Nn ,与序列 )(nWknN  的卷积,因此表示为 W knNnxnyk *)()(  ( ) 令 )(nhk WknN ( ) 则 *)()( nxnyk  )(nhk ( ) 由上式,将 )(nyK看成是序列 x( n) 通过单位脉冲响应为 )(nhk WknN的滤波器的输出,根据式( ) 和式 ( ) ,得到 Nnk nykX  |)()( () 那么, x( n) 的 DFT 的第 k 点就是序列 x(n)通过滤波器 )(nhk 输出的第 n=N 点。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。