好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

双音多频通信设计的Matlab仿真.doc

15页
  • 卖家[上传人]:宝路
  • 文档编号:23698070
  • 上传时间:2017-12-02
  • 文档格式:DOC
  • 文档大小:361KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 双音多频(DTMF)通信设计的 MATLAB 仿真摘要:讨论以 MATLAB 作为仿真工具产生 DTMF 信号,并用 FFT 算法、DFT 算法、卷积法及迭代法来对 DTMF 信号进行解码关键词:FFT;DFT;频谱分析;卷积;滤波;差分方程;MATLAB0 引 言双音多频(DTMF:Double Tone Multi-Frequency)是按键通信,也广泛应用于电子邮件和银行系统中用户可从发送 DTMF 信号来选择菜单进行操作DTMF 信号容易用软件产生和解码MATLAB 是一个高度集成的软件系统,通过交互式的命令(语句)可以十分简便地实现许多复杂的数值计算本文采用 MATLAB 作为仿真工具产生 DTMF 信号,并用 FFT 算法、DFT 算法、卷积法及迭代法来对 DTMF 信号进行解码,由此得出:时域和频域是研究信号的两个窗口,其中信号处理大都在时域中进行,而信号分析往往在频域中比较方便直观且数字信号处理技术中的 DFT、FFT、卷积、滤波、差分方程这几个概念之间有内在联系1 DTMF 信号的产生DTMF 是数字音频信号,在 DTMF 通信系统中共有 8 个频率,分为 4 个高频音和 4 个低频音,用一个高频音和一个低频音的组合表示一个信号,这样共有 16 种组合,分别代表16 种信号,如表 1 所示:fH(Hz)fL(Hz)1209 1336 1477 1633697 1 2 3 A770 4 5 6 B852 7 8 9 C941 * 0 # D表 1 DTMF 信号组合表例如,当按下数字键“1”时,则产生低频 697Hz 和高频 1209Hz 这两个正弦信号的迭加。

      由于语音信号的最高频率为 4KHz,根据奈奎斯特取样定理,取样频率 fs 应大于或等于原信号最高频率 fc 的两倍,即fs≥2fc (1)才能保证取样后的信号不失真,所以音频信号在数字信号处理时,取样频率 fs 为2×4k=8kHz,这里,每个数字信号持续时间为 100ms,后面加上 100ms 的间隔时间(用 0 表示) 上述 DTMF 信号产生方法如下:(1) 建立拨号数字的表矩阵,用查表法(查表 1)求用户所按数字键对应的高、低频音为简化起见,仅允许选择“0-9”这十个键,在开始时还可拨空信号2) 产生相应的 DTMF 信号及间隔时间由于 fs=8kHz,各信号持续时间为 100ms,因此在程序中每个信号取 800 点,间隔时间也取800 点,结果存入数组中3)画图并监听产生的 DTMF 信号程序如下:%[程序 1], DTMF 信号的产生clear %清除内存TAB=[941 1336;697 1209;697 1336;697 1477;770 1209;770 1336;770 1477;852 1209;852 1336;852 1477];%拨号数字表矩阵n=input('n='); %DTMF信号的个数l=input('n0=');%空信号点数for i=1:nk=input('0~9');%输入的数字键fL=TAB(k+1,1); %k对应的低频音fH=TAB(k+1,2); %k对应的高频音n1=800;fs=8000;%产生k对应的DTMF信号,取样频率 8kHz,每个信号共1600点,其中,j=0:1:n1-1; 前800点为信号持续时间,后800 点为间隔时间,结果存入数组out中。

      x=sin(2*pi*fL*j/fs)+sin(2*pi*fH*j/fs);out(1600*(i-1)+1+l:1600*i-800+l)=x;out(1600*i-799+l:1600*i+l)=0;endout=out./2; %out数组中每个数据除以2subplot(211); plot(out); %绘图并监听DTMF 信号sound(out,fs)wavwrite(out,fs,'D2.wav');%out另存入声音文件程序结果:例如:若要产生数字键“1”所对应的DTMF 信号,且开始时有200 点空信号,则程序运行如下:询问: 输入:n= 1n0= 2000-9 1得图 1:图 1 DTMF 信号图图 1 中,前 200 点为空信号,第 201-1000 点为键“1”对应的 DTMF 信号,第 1001-1800 点为间隔时间İ ⸰0 ⸰0 ⸰0 ⸰0 ⸰⸰ ⸰⸰ ⸰⸰ ⸰⸰ ⸰⸰ ⸰ ⸰ 0⸰5 10 ⸰0 ⸰0 ⸰⸰ ⸰0 ⸰⸰ ⸰⸰ ⸰⸰ ⸰⸰ ⸰⸰ ⸰ ⸰ 0⸰5 1另外,在程序中为使软件设计更接近于实际硬件的开发应用,可用求解差分方程的方法来代替正弦函数的调用。

      设正弦序列为 h(n)=sin(ω kn)u(n),为实时实现 h(n),必须找到其满足的差分方程正弦序列 h(n)的 z 变换为: X(z),b)zaY(z)1,az1bazX()YHz cos2 ,sin/H(), cos2in() 121 kkk 则 ωω分 母 系 数 :分 子令ωω a两边进行反变换,得 y(n)-ay(n-1)+y(n-2)=bx(n-1),式中,若令 x(n)=δ(n),则得到 h(n)的差分方程为 h(n)-ah(n-1)+h(n-2)=bδ(n-1),即:h(n)= ah(n-1)-h(n-2)+bδ(n-1) (2)用迭代法解此差分方程,即得数字频率为 ω k的正弦序列 h(n)在硬件中,该差分方程是由加法器、乘法器和单位延时单元构成的系统将 x(n)=δ(n)输入该系统后,输出的就是h(n)本文中,每个 DTMF 信号 h(n)是两个频率的正弦序列相迭加,设为 hL(n)和 hH(n),为此,分别求得 hL(n)和 hH(n)所满足的差分方程:hL(n)= aLhL(n-1)-hL(n-2)+bLδ(n-1) ;h H(n)= aHhH(n-1)-hH(n-2)+bHδ(n-1)则 h(n)= hL(n)+hH(n) 。

      相关程序如下:%[程序 2],用解差分方程方法产生 DTMF 信号x=zeros(1,800);x(2)=1;%x(n)=δ(n-1)(x(n)取800 点)n=input('n='); %DTMF信号的个数l=input('n0='); %空信号的点数out=zeros(1,1600*n+l);%out数组初始化w=2*pi/8000*[941 1336;697 1209;697 1336;697 1477; 770 1209;770 1336;770 1477;852 1209;852 1336;852 1477];%各信号对应的数字频率tab=[2*cos(w) sin(w)];%各信号满足的差分方程h L(n)和h H(n)中系数a,b的矩阵for i=1:nk=input('0-9-'); %输入的数字键hL=zeros(1,3);hH=zeros(1,3);% hL(n)和h H(n)初始化for j=1:800 %迭代法求解h L(n)和h H(n)产生相应的DTMF信号,存入outhL(3)=tab(k+1,1)*hL(2)-hL(1)+tab(k+1,3)*x(j);hL(1)=hL(2);hL(2)=hL(3);hH(3)=tab(k+1,2)*hH(2)-hH(1)+tab(k+1,4)*x(j);hH(1)=hH(2);hH(2)=hH(3);out(1600*(i-1)+j+l)=hL(3)+hH(3);out(1600*(i-1)+j+800+l)=0;endend2 DTMF信号的解码解码就是对接收到的DTMF信号进行频谱分析,从中找出代表各信号的的特征字,由此获知用户按下的数字键。

      为在频谱图中分辨出不同的频率分量,于是对信号取200点为一帧,则频谱分辨率F=f s/N=8000/200=40Hz>1 时,X(k)= y k(N)≈y k(N-1) (6)先构造一滤波器,其单位脉冲响应为:图 6 卷积法框图 2相关程序如下:N=200; %接收DTMF 信号,并绘图A=wavread('D2.wav');subplot(212); plot(A);w=[697 770 852 941 1209 1336 1477 1633];a1=2*pi/8000;w=a1*w; %w---DTMF信号用到的数字频率for l1=1:8*n %每200点为一帧,在8 个特定频率w(1)~w(8)上作卷积y=x 1*hkfor k1=1:8 %x1---信号;h k---滤波器(h k=cos(ω k1m)+jsin(ω k1m))x1=out((l1-1)*200+1:l1*200); m=0:1:N-1;hk=cos(w(k1)*m)+j*sin(w(k1)*m);y=conv(x1,hk);r(l1,k1)=abs(y(N));%将x 1幅频谱|X(k 1)|≈|y(N-1)|存入r 数组endc(l1,:)=r(l1,:);z=find(c(l1,:)<40); %消除频谱泄漏现象c(l1,z)=zeros(size(z)); 1)(N )()1())()( 01-0,.Nn)( 1x(n))1(     yNkXnyhWh kNkkkN则 卷 积 法 框 图 变 为 :其 它 证 明 成 立 。

      则, 输 出相 当 于 通 过通 过此 时 , 时 ,当又 1),(N ))1() ),(( )(1)(,).)0( .1( )0(1.)2()(0)))(((*(.)( n n )(1)1]2([](1[010 )(010  yNkX ynhnhx hWWNkXxWxNxhhmNhNynxnx WxXk kk kNknNkk km kNNmend(3)查表 3,将各 DTMF 信号还原为相应的数字键程序同 DFT 法相应部分卷积法程序结果与 DFT 算法的结果相同四、迭代法为使解码过程更接近于硬件的实现,可在卷积法的基础上,找到 hk(n)满足的差分方程,这样,以接收到的 DTMF 信号 x(n)为输入,用迭代法解此差分方程,则在 n=N 时刻的输出yk(n)就是 X(k),再画|X(k)| 2,即可对信号进行频谱分析,从而解码迭代法解码过程如下:(1) 接收 DTMF 信号,并绘图2) 用迭代法对 DTMF 信号进行检测,找出代表各信号的特征字一) 求 hk(n)满足的差分方程即: y k(n)=WN-kyk(n-1)+x(n) (7)(7)式对应的系统结构图如下:图 8 h k(n)系统结构图 1则 yk(n)|n=N =X(k)。

      2)Hk(z)分母有理化7)式中,由于 WN-k是复数,因此在计算 yk(n)时,会碰到复数运算,不方便,为避免复数运算,首先可对 Hk(z)进行分母有理化,其基本原理为:用一对复共轭极点代替单极点滤波器的思想)(1()()( ,) ),(1 )(1 (,)()()(11 010 nxyWnnhz zXYzzXYzWXYHunnhzHkNkkkNkkN nnkNnNknkZk   满 足 的 差 分 方 程 为 :反 变 换 , 得对 上 式 两 边 进 行 即)(, 变 换 为 :则 其由 卷 积 法 得 的 差 分 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.