信号与系统实验电话拨号音的合成与分解
- 格式:docx
- 大小:150.30 KB
- 文档页数:7
声音的奇妙合成与分解实验实验目的:
通过实验观察声音的合成和分解过程,了解声音的本质和特性。
实验材料:
1.计算机音频软件(如Audacity)
2.音频采集卡(可选)
3.扬声器或耳机
4.麦克风
实验步骤:
1.声音的合成
(1)打开音频软件,在音频轨道上录制两段清晰的声音样本,并将它们单独保存。
(2)选择一段音频,将其复制到另一个轨道上,调节两个轨道的音量大小,使它们相互重叠。
此时发现,两段声音通过叠加产生了新的声音,这就是声音的合成过程。
2.声音的分解
(1)将合成的声音和原始声音一起保存,重新打开软件,选择原始的声音轨道,并使用谱分析工具观察其频谱特征。
(2)选定频谱上的一段区间,将其复制到另一个轨道上,并使用滤
波器将这一段区间从原始音频轨道上剔除。
此时,认为分离出了原始
声音中的一段频率区间,即声音的分解过程。
实验结果:
通过实验结果可以发现,声音的合成和分解都是基于声音波形的
基础上进行的。
声音的合成是将两段声音波形相加形成新的波形;声
音的分解则是通过谱分析将一个复杂波形分解成多个简单波形的过程。
实验提示:
在进行合成和分解实验时,注意保持音频清晰,尽量避免外界噪
音的干扰。
此外,实验中的操作需要耐心和细心,需要多次尝试和调整,才能得到合适的实验结果。
DTMF拨号原理1. 简介DTMF(Dual Tone Multi-Frequency)是一种用于电话系统中的拨号信号传输方法。
它使用了两个频率合成的音调来表示数字、字母和特殊字符,以实现电话号码的拨号和其他控制功能。
在本文中,我们将详细解释DTMF拨号原理的基本原理,包括DTMF信号的产生、传输和解码过程。
2. DTMF信号的产生DTMF信号由两个基本频率合成而成,分别称为行频和列频。
行频由4个低频音调组成,分别为697 Hz、770 Hz、852 Hz和941 Hz;列频由4个高频音调组成,分别为1209 Hz、1336 Hz、1477 Hz和1633 Hz。
每个按键都对应着一个唯一的行列频率组合。
例如,在电话键盘上按下数字“5”时,会同时发送行频852 Hz和列频1336 Hz的信号。
生成DTMF信号的方法有多种,其中最常见的是使用一个称为双音多路复用器(Dual Tone Multi-Frequency Generator)的集成电路芯片。
该芯片接收输入的数字或字符,并根据对应的行列频率生成相应的DTMF信号。
3. DTMF信号的传输DTMF信号在电话系统中通过音频通道传输,也就是说,它被转换为模拟音频信号后通过电话线路传输。
在拨号过程中,当用户按下电话键盘上的按键时,电话机会将对应的DTMF信号发送到电话交换机或基站。
电话交换机或基站会解码接收到的DTMF信号,并根据解码结果执行相应的操作。
由于DTMF信号是以模拟音频形式传输的,因此在传输过程中可能会受到一些干扰和失真。
为了减少这些干扰和失真对信号识别造成的影响,通常会对DTMF信号进行一些预处理和增强处理。
4. DTMF信号的解码接收到DTMF信号后,需要对其进行解码以获取用户所拨打的数字、字母或特殊字符。
解码过程通常由一个称为双音多路复用解码器(Dual Tone Multi-Frequency Decoder)的集成电路芯片完成。
知识就昱力量MATLAB 电话拨号音的合成与识别1. 实验目的1.本实验内容基于对电话通信系统中拨号音合成与识别的仿真实现。
主要涉及到电话拨号音合成的基本原 理及识别的主要方法,利用 MATLAB 软件以及FFT 算法实现对电话通信系统中拨号音的合成与识别。
并进一步利用 MATLAB 中的图形用户界面 GUI 制作简单直观的模拟界面。
使其对电话通信系统拨号音 的合成与识别有个基本的了解。
2. 能够利用矩阵不同的基频合成 0 — 9不同按键的拨号音,并能够对不同的拨号音加以正确的识别,实 现由拨号音解析出电话号码的过程。
进一步利用 GUI 做出简单的图形操作界面。
要求界面清楚,画面简洁,易于理解,操作简单。
从而实现对电话拨号音系统的简单的实验仿真。
2.实验原理 1. DTMF 信号的组成双音多频 DTMF ( Dual Tone Multi-Frequency )信号,是用两个特定的单音频率信号的组合来代表数 字或功能。
在DTMF 电话机中有16个按键,其中10个数字键0 — 9, 6个功能键*、#、A 、D 。
其中12个按键是我们比较熟悉的按键,另外由第4列确定的按键作为保留,作为功能 1209Hz 、 1336Hz 、 1477H:、 1633Hz 高频群。
从低频群和高频群任意各抽出一种频率进行组合, 共有16种组合,代表16种不同的数字键或功能,每个按键唯一地由一组行频和列频组成,如表 示。
V4 Z Z.+DTMF 的组合功能3. 实验步骤1. DTMF 信号的产生合成现在将对上节制作的图形电话拨号面板上的各控件单位的动作和变化进行设置, 即对tu1.m 文件进行编辑。
其主要的功能是使对应的按键,按照表1的对应关系产生相应的拨号音,完成对应行频及列频的叠加输岀。
此外,对于图形界面的需要,还要使按键的号码数字显示在拨号显示窗口中。
键留为今后他用。
根据CCITT 建议,国际上采用 697Hz 、770Hz 、 852Hz 、 941Hz 低频群及■I知识就昱力量鉴于CCITT对DTMF信号规定的指标,这里每个数字信号取1000个采样点模拟按键信号,并且每两个数字之间用100个0来表示间隔来模拟静音。
合肥学院课程设计报告题目:_ 电话通信系统中信号音的产生与实现系别:__ 电子信息与电气工程系 _ _ 专业:___ 通信工程___ ______ _班级:____ _ ______2013年 12月 09日《现代通信技术课程设计》课程设计任务书电话通信系统中信号音的产生及其实现摘要:随着社会的飞速发展,人与人之间的交流日益密切,电话通信系统运用日趋广泛,每时每刻都充满了我们的生活,给我们的生活提供了方便,带来了不一样的体验和色彩。
在电话通信系统中,各种不同的信号音对我们的通信状态,有很大的提示和指引作用。
本设计中我们通过运用所学的FPGA的相关知识,基于VHDL语言进行编程,借助Quartus软件和GW-48实验开发平台设计实现拨号音,回铃音、忙音、通知音,这四种不同的信号音,并进行验证。
关键词:信号音;VHDL语言;FPGA ;Quartus2 ;实现;正文:一、设计目的1.掌握CPLD可编程器件的编程和下载方法。
2.熟悉用CPLD可编程器件产生程控交换中信令信号的方法。
3.从设计中掌握一些基本技巧,提高自己动手能力和发现问题解决问题的能力。
4.通过设计完成一个小项目,培养团队合作能力,并检验我们四年来所学的专业知识。
二、设计要求利用可编程器件CPLD对系统的全局时钟信号进行分频,产生程控交换系统中电话交换的4种信号音:拨号音:连续发送的500Hz信号。
回铃音:1秒通,4秒断的5秒断续的500Hz信号。
忙音:0.35秒通,0.35秒断的0.7秒断续的500Hz信号。
振铃信号(铃流):以0.2秒通,0.2秒断,以0.2秒通,0.6秒断的1.2秒断续方式发送。
通过软件编程及仿真,正确实现以上四种信号音的发生,最终下载,并用示波器观察波形,和拨数字键调出不同信号音听扬声器发出声音是否正确来验证程序及产生信号音的正确性。
三、设计原理设计中我们用到的开发系统主频为50MHz,因设计要求产生500Hz及25Hz 的信号音,故我们首先考虑把50MHz的主频进行分频。
信号的分解与合成实验报告广州大学学生实验报告学院日期:2014年5月20专业: 年级: 成绩:姓名: 学号:实验课程名称:信号与系统实验指导老师:实验项目名称:滤波器的频响特性测定一、实验目的1、进一步掌握周期信号的傅里叶级数。
2、用同时分析法观测锯齿波的频谱。
3、全面了解信号分解与合成的原理。
4、掌握带通滤波器的有关特性测试方法及其选频作用。
5、掌握不同频率的正弦波相位差是否为零的鉴别和测试方法(李沙育图形法)。
二、实验原理任何电信号都是由各种不同频率、幅度和初相的正弦波叠加而成的。
对周期信号由它的傅里叶级数展开式可知,各次谐波为基波频率的整数倍。
而非周期信号包含了从零到无穷大的所有频率成分,每一频率成分的幅度均趋向无限小,但其相对大小是不同的。
通过一个选频网络可以将信号中所包含的某一频率成分提取出来。
对周期信号的分解,可以采用性能较佳的有源带通滤波器作为选频网络。
若周期信号的角频率,则用作选频网络的,种有源带通滤波器的输出频率分别是、Wo,1Wo,2Wo,。
NWo,从每一有源带通滤波器的输出端可2wo、3Wo、4Wo、5Wo( 以用示波器观察到相应谐波频率的正弦波,这些正弦波即为周期信号的各次谐波。
把分离出来的各次谐波重新加在一起,这个过程称为信号的合成。
本实验中,将被测锯齿波信号加到分别调谐于其基波和各次谐波频率的一系列有源带通滤波器电路上。
从每一有源带通滤波器的输出端可以用示波器观察到相应频率的正弦波。
本实验所用的被测周期信号是,,,,,的锯齿波,而用作选频网络的,种有源带通滤波器的输出频率分别是,,,,,、,,,Hz、300Hz、 400Hz、500Hz、600Hz、700Hz,因而能从各有源带通滤波器的两端观察到基波和各次谐波。
奇次谐波的相位与基波同相,而偶次谐波的相位与基波反相。
各次谐波之间的相位差可以用李沙育图形法测量.。
利用运算放大器可以制成加法器,通过加法器将锯齿波分解出来的各次谐波相叠加,可以重新获得锯齿波。
《信号与系统》课程设计——语音信号的分析和处理第一篇:《信号与系统》课程设计——语音信号的分析和处理《信号与系统》课程设计——语音信号的分析和处理【设计题目】基于时频域的分析方法对语音信号进行分析和处理【设计目标】尝试对语音信号进行时频域分析和处理的基本方法【设计工具】MATLAB 【设计原理】通过MATLAB的函数wavread()可以读入一个.wav格式的音频文件,并将该文件保存到指定的数组中。
例如下面的语句(更详细的命令介绍可以自己查阅MATLAB的帮助)中,将.wav读入后存放到矩阵y中。
y = wavread('SpecialEnglish.wav');对于单声道的音频文件,y只有一行,即一个向量;对于双声道的音频文件,y有两行,分别对应了两个声道的向量。
我们这里仅对一个声道的音频进行分析和处理即可。
注意:.wav文件的采样频率为44.1KHz,采样后的量化精度是16位,不过我们不用关心其量化精度,因为在MATLAB读入后,已将其转换成double型的浮点数表示。
在获得了对应音频文件的数组后,我们可以对其进行一些基本的分析和处理。
可以包括:1、对语音信号进行频域分析,找到语音信号的主要频谱成分所在的带宽,验证为何电话可以对语音信号采用8KHz的采样速率。
2、分析男声和女声的差别。
我们知道男声和女声在频域上是有些差别的,一般大家都会认为女声有更多高频的成分,验证这种差别。
同时,提出一种方法,能够对一段音频信号是男声信号、还是女声信号进行自动的判断。
3、语音与乐器音频的差别。
比较语音信号与乐器音频信号的差别,尤其是在频域上的差别。
4、.wav文件的采样速率为44.1KHz,仍然远远高于我们通常说的语音信号需要的频谱宽度,例如在电话对语音信号的采样中,我们仅仅使用8KHz的采样速率。
对读入的音频数据进行不同速率的降采样,使用wavplay()命令播放降采样后的序列,验证是否会对信号的质量产生影响。
信号与系统中信号分解与合成实验报告信号与系统实验报告非正弦周期信号的分解与合成专业:班级:姓名:学号:用同时分析法观测50Hz非正弦周期信号的分解与合成用同时分析法观测50Hz 非正弦周期信号的分解与合成一、实验目的1、用同时分析法观测50Hz非正弦周期信号的频谱,并与其傅立叶级数各项的频率与系数作比较。
2、观测基波和其谐波的合成。
二、实验设备1、信号与系统实验箱:THKSS,A型或THKSS,B型或THKSS,C型。
2、双踪示波器,数字万用表。
三、实验原理1、一个非正弦周期函数可以用一系列频率成整数倍的正弦函数来表示,其中与非正弦具有相同频率的成分称为基波或一次谐波,其它成分则根据其频率为基波频率的2、3、4、…、n等倍数分别称二次、三次、四次、…、n次谐波,其幅度将随谐波次数的增加而减小,直至无穷小。
2、不同频率的谐波可以合成一个非正弦周期波,反过来,一个非正弦周期波也可以分解为无限个不同频率的谐波成分。
3、一个非正弦周期函数可用傅立叶级数来表示,级数各项系数之间的关系可用一个频谱来表示,不同的非正弦周期函数具有不同的频谱图,各种不同波形及其傅氏级数表达式见表2-1,方波频谱图如图2-1表示方波频谱图各种不同波形的傅立叶级数表达式1、方波4u111 mu(t),(sin,t,sin3,t,sin5,t,sin7,t,,,,),3572、三角波8U11 mu(t),(sin,t,sin3,t,sin5,t,,,,)2,9253、半波2U1,11 mu(t),(,sin,t,cos,t,cos4,t,,,,),243154、全波4U1111 mu(t),(,cos2,t,cos4,t,cos6,t,,,,),2315355、矩形波,U2U ,,12,,13,,mmu(t),,(sincos,t,sincos2,t,sincos3,t,,,,)T,T2T3T实验装置的结构如下图所示信号分解与合成实验装置结构框图,图中LPF为低通滤波器,可分解出非正弦周期函数的直流分量。
大连理工大学实验报告学院(系):专业:班级:姓名:学号:组:___实验时间:实验室:实验台:指导教师签字:成绩:实验二电话拨号音合成与识别一、实验结果与分析数字拨号音频谱分析(代码与频谱):n=[1:410];fs=8192;d1=sin(2*pi*697/fs*n)+sin(2*pi*1209/fs*n); D1=fft(d1); t1=(0:length(d1)-1)*fs/length(d1)-fs/2; figure(1);plot(t1,fftshift(abs(D1)));title('按键‘1’的频谱'); d1=sin(2*pi*697/fs*n)+sin(2*pi*1336/fs*n); D1=fft(d1); figure(2);plot(t1,fftshift(abs(D1)));title('按键‘2’的频谱'); d1=sin(2*pi*697/fs*n)+sin(2*pi*1477/fs*n); D1=fft(d1); figure(3);plot(t1,fftshift(abs(D1)));title('按键‘3’的频谱'); d1=sin(2*pi*770/fs*n)+sin(2*pi*1209/fs*n); D1=fft(d1); figure(4);plot(t1,fftshift(abs(D1)));title('按键‘4’的频谱'); d1=sin(2*pi*770/fs*n)+sin(2*pi*1336/fs*n); D1=fft(d1); figure(5);plot(t1,fftshift(abs(D1)));title('按键‘5’的频谱'); d1=sin(2*pi*770/fs*n)+sin(2*pi*1477/fs*n); D1=fft(d1); figure(6);plot(t1,fftshift(abs(D1)));title('按键‘6’的频谱'); d1=sin(2*pi*852/fs*n)+sin(2*pi*1209/fs*n); D1=fft(d1); figure(7);plot(t1,fftshift(abs(D1)));title('按键‘7’的频谱'); d1=sin(2*pi*852/fs*n)+sin(2*pi*1336/fs*n); D1=fft(d1); figure(8);plot(t1,fftshift(abs(D1)));title('按键‘8’的频谱'); d1=sin(2*pi*852/fs*n)+sin(2*pi*1477/fs*n); D1=fft(d1);figure(9);plot(t1,fftshift(abs(D1)));title('按键‘9’的频谱');d1=sin(2*pi*941/fs*n)+sin(2*pi*1209/fs*n); D1=fft(d1); figure(10); plot(t1,fftshift(abs(D1)));title('按键‘*’的频谱');d1=sin(2*pi*941/fs*n)+sin(2*pi*1336/fs*n); D1=fft(d1); figure(11); plot(t1,fftshift(abs(D1)));title('按键‘0’的频谱');d1=sin(2*pi*941/fs*n)+sin(2*pi*1477/fs*n); D1=fft(d1); figure(12); plot(t1,fftshift(abs(D1)));title('按键‘#’的频谱');频谱图如下:-2000-1500-1000-0050100150200250按键‘1’的频谱-2000-1500-1000-0 050100150200250按键‘2’的频谱-2000-1500-1000-0 50100150200250按键‘3’的频谱-2000-1500-1000-0 50100150200250按键‘4’的频谱-2000-1500-1000-0 050100150200250按键‘5’的频谱-2000-1500-1000-0 050100150200250按键‘6’的频谱-2000-1500-1000-0 050100150200250按键‘7’的频谱-2000-1500-1000-0 050100150200250按键‘8’的频谱-2000-1500-1000-0 050100150200250按键‘9’的频谱-2000-1500-1000-0 050100150200250按键‘*’的频谱-2000-1500-1000-0050100150200250按键‘0’的频谱温馨推荐您可前往百度文库小程序享受更优阅读体验不去了立即体验-2000-1500-1000-0050100150200250按键‘#’的频谱图形电话拨号面板的制作:首先是框架的搭建:利用callback 在.m 文件中对各个模块进行代码的编辑(下面列出主要部分):1、数字0~9的显示与发声(以数字‘7’为例):% --- Executes on button press in pushbutton7.function pushbutton7_Callback(hObject, eventdata, handles)% hObject handle to pushbutton7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)n0=strcat(get(handles.numshow,'string'),'7'); % 获取数字号码set(handles.numshow,'string',n0); % 显示号码n=[1:handles.DTMFnum]; % 每个数字410 个采样点表示d0=sin(2*pi*852/handles.fs*n)+sin(2*pi*1209/handles.fs*n); % 对应行频列频叠加space=zeros(1,handles.DTMFnum); %400 个0 模拟静音信号phone=[handles.NUM,d0];handles.NUM=[phone,space]; % 存储连续的拨号音信号guidata(hObject, handles);wavplay(d0,8192);2、删除键‘*’的代码:% --- Executes on button press in pushbutton11.function pushbutton11_Callback(hObject, eventdata, handles)% hObject handle to pushbutton11 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDA TA)n=[1:1000];num=get(handles.numshow,'string');l=length(num);n11=strrep(num,num,num(1:l-1));d11=sin(0.7217*n)+sin(0.9273*n);set(handles.numshow,'string',n11);L=length(handles.NUM);handles.NUM=handles.NUM(1:L-820);guidata(hObject, handles);wavplay(d11,8192);3、确认键‘#’的代码:% --- Executes on button press in pushbutton12.function pushbutton12_Callback(hObject, eventdata, handles)% hObject handle to pushbutton12 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDA TA)n0=strcat(get(handles.numshow,'string'),'#'); % 获取数字号码set(handles.numshow,'string',n0); % 显示号码n=[1:handles.DTMFnum]; % 每个数字410 个采样点表示d0=sin(2*pi*941/handles.fs*n)+sin(2*pi*1477/handles.fs*n); % 对应行频列频叠加guidata(hObject, handles);wavplay(d0,8192);4、清空键‘Reset’的代码:% --- Executes on button press in btFW.function btFW_Callback(hObject, eventdata, handles)% hObject handle to btFW (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDA TA) handles.NUM=[];set(handles.numshow,'string',[]); % 显示号码set(handles.numRec,'string',[]); % 显示号码guidata(hObject, handles);5、显示键的代码:% --- Executes on button press in btRec.function btRec_Callback(hObject, eventdata, handles)% hObject handle to btRec (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDA TA)L=length(handles.NUM);n=L/handles.DTMFsum;number='';for i=1:nj=(i-1)*handles.DTMFsum+1;d=handles.NUM(j:j+(handles.DTMFnum-1)); % 截取出每个数字f=fft(d,8192); % 以N=2048 作FFT 变换a=abs(f);p=a.*a/handles.fs; % 计算功率谱% p=a.*a/10000; % 计算功率谱num(1)=find(p(1:1000)==max(p(1:1000))); % 找行频num(2)=1000+find(p(1000:1700)==max(p(1000:1700))); % 找列频if (num(1) < 730)row=1; % 确定行数elseif (num(1) < 810)row=2;elseif (num(1) < 900)row=3;elserow=4;endif (num(2) < 1260) column=1; % 确定列数elseif (num(2) < 1400) column=2;elsecolumn=3;endz=[row,column]; % 确定数字if z==[4,2]tel=0;elseif z==[1,1]tel=1;elseif z==[1,2]tel=2;elseif z==[1,3]tel=3;elseif z==[2,1]tel=4;elseif z==[2,2]tel=5;elseif z==[2,3]tel=6;elseif z==[3,1]tel=7;elseif z==[3,2]tel=8;elseif z==[3,3]tel=9;endt(i)=tel;c=strcat(number,int2str(tel)); number=c;i=i+1;endset(handles.numRec,'string',number); % 显示号码GUI界面的操作:(1)初始化界面(2)输入数字后的界面(3)按‘*’后删除一位(4)按‘#’后确认键(5)按下显示键显示出来(6)按下Reset键清空二、讨论、建议、质疑做本实验分两部分,第一部分是做图形化(GUI)界面的设计,第二部分是做电话信号的频谱分析。
沈阳工程学院学生实验报告实验室名称:通信实验室课程名称:数字传输技术实验名称:双音多频电话拨号音产生实验实验日期: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);otherwiseerror('输入号码错误');endX=wav([fL,fH,Fs,time_of_num]); %产生拨号频率信号X=[X,zeros(1,Fs*0.1)]; %添加拨号间隔XX=[XX,X]; %多个拨号顺序合成endif nargout==1y=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所示。