实验1 双音多频电话拨号音产生实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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的拨号波形