实验1 双音多频电话拨号音产生实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

沈阳工程学院

学生实验报告

实验室名称:通信实验室课程名称:数字传输技术

实验名称:双音多频电话拨号音产生实验实验日期:2015年11月6日

班级:通信32 姓名:张翼学号:2013312211

指导教师:何思远成绩:

一、实验目的

1. 理解双音多频电话拨号音产生的原理。

2. 掌握使用MATLAB语言产生双音多频电话拨号音的方法。

二、实验原理

电话拨号产生的电话号码是通过双音多频(DTMF)格式从电话机传送给交换机的。所谓双音多频,就是利用两个规定频率的正弦波去代表电话机的某一个按键,当按下某按键时,就发送相应的一组正弦波。交换机一方通过检测这组正弦波的频率来识别相应的号码信息。DTMF规定的电话拨号按键与发送正弦波频率组的对应关系如图1所示。

图1 DTMF规定的电话拨号按键与发送正弦波频率组的对应关系

此外,Matlab也提供了关于电话拨号的演示程序phone。图2为使用phone命令打开的演示窗口。

图2 Matlab中的phone演示窗口

三、实验内容及要求

根据双音多频电话拨号音产生的原理,用一个函数文件(Function File)产生双音多频电话拨号音。要求该函数能够根据输入的电话号码产生拨号音频,每个号码的DTMF音持续时间为0.3秒,拨号间隔为0.1秒。

四、程序代码

function y=myphone(num_str)

%输入num_str为电话号码字符串,为1.2.3.4.5.6.7.5.6.0.*.#

%输出为相应的拨号音效矩阵

%如果不给出输出变量,则从声卡输出拨号音频

freq_low=[697 770 852 941]; %低频频率

freq_Hgh=[1209 1336 1477]; %高频频率

time_of_num=0.3; %每个号码的DTMF音持续时间

Fs=8000; %信号采集率

wav=inline('0.25*sin(2*pi*p(1)*[1/p(3):1/p(3):p(4)])+0.25*sin(2*pi*p(2)*[1/p(3):1/p(3):p(4)])','p'); %P=[fL,fH,time_of_num]

%参数的含义:[高频率,低频率,采样率,持续时间]

XX=[]; %提高运行速度

for k=1:length(num_str)

switch num_str(k) %根据拨号确定双音频对case '1'

fL=freq_low(1);fH=freq_Hgh(1);

case '2'

fL=freq_low(1);fH=freq_Hgh(2);

case '3'

fL=freq_low(1);fH=freq_Hgh(3);

case '4'

fL=freq_low(2);fH=freq_Hgh(1);

case '5'

fL=freq_low(2);fH=freq_Hgh(2);

case '6'

fL=freq_low(2);fH=freq_Hgh(3);

case '7'

fL=freq_low(3);fH=freq_Hgh(1);

case '8'

fL=freq_low(3);fH=freq_Hgh(2);

case '9'

fL=freq_low(3);fH=freq_Hgh(3);

case '0'

fL=freq_low(4);fH=freq_Hgh(2);

case '*'

fL=freq_low(4);fH=freq_Hgh(1);

case '#'

fL=freq_low(4);fH=freq_Hgh(3);

otherwise

error('输入号码错误');

end

X=wav([fL,fH,Fs,time_of_num]); %产生拨号频率信号X=[X,zeros(1,Fs*0.1)]; %添加拨号间隔XX=[XX,X]; %多个拨号顺序合成

end

if nargout==1

y=XX; %返回

else %如果无返回变量,则播放声音,并做出波形图sound(XX,Fs);

plot([1:length(XX)]./Fs,XX);

axis([0 length(XX)/Fs -1 1]);

xlabel('time(sec)');

title(['The telephone number is : ',num_str]);

end

编辑并存盘为myphone.m后,执行:

(1)myphone('31975555');

从声卡输出拨号DTMF音,并显示出拨号波形图,如图3所示。(2)y=myphone('31975555');

wavwrite(y,8000,'C:\mytelephonenum31975555.wav');

将拨号声音存盘为wav文件:mytelephonenum31975555.wav

图3 电话号码31975555的拨号波形

相关文档
最新文档