MATLAB仿真技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB仿真技术
大
作
业
利用MATLAB 设计双音多频拨号音编解码系统 一、实验内容
利用MATLAB 设计一个双音多频拨号音编解码系统。 二、实验原理
一个双音多频电话机(dual-tone multi-freqency touch-tone phone,DTMF)可以对十六个按键编码,每个码都是两个单频正弦之和。这两个单频正弦信号分别来自两个频率组,即列频率组(或称低频群)与行频率组(或称高频群),他们与每个按键的对应关系如表1所示。
表1 DTMF 按键对应关系表
数字DTMF 接收机通过接收到的声音信号的频谱,再现每个按键所对应的两个频率,从而确认被发送的电话号码。 1.DTMF 信号的编码
可以使用查表方式模拟产生两个不同频率的正弦波。 2.DTMF 信号的解码
DTMF 信号解码可以采用FFT 计算N 点频率处的频谱值,然后估算出所拨号码。但FFT 计算了许多不需要的值,计算量太大,而且为保证频率分辨率,FFT 的点数较大,不利于实时实现。因此,FFT 不适合于DTMF 信号解码的应用。由于只需要知道八个特定点的频谱值,因此实际中采用了一种称为Goertzel 算法的IIR 滤波器,可以有效的提高计算效率。它相当于一个含有有两个极点的lIR 滤波器,八个频点对应各自相匹配的滤波器,其传递函数为
2
11
/2)/2cos(211)(----+--=z
z N k z e z H N k j k ππ 三、实验要求
要求:(1)产生DTMF 信号,并显示时域和频域波形;
(2)由DTMF信号解出按键数字,并显示时域和频域波形以及按键数字。解:设计程序如下:
clc,clear
symbol={'1','2','3','4','5','6','7','8','9','*','0','#'};
lfg=[697 770 852 941];
hfg=[1209 1336 1477];
f=[];
for l=1:4,
for h=1:3,
f=[f,[lfg(1);hfg(h)]];
end
end
Fs=8000;
N=800;
t=(0:N-1)/Fs;
tones=zeros(N,size(f,2));
for toneChoice=1:12,
tones(:,toneChoice)=sum(sin(2*pi*f(:,toneChoice)*t));
end
num=input('input the tones of phone number,num=');
s_tones=[];
for i=[1:length(num)]
j=num(i);
s_tones=[s_tones,tones(:,j)];
p=audioplayer(s_tones(:,i),Fs);
play(p)
pause(0.5)
end
Nt=205;
orgf=[lfg(:);hfg(:)];
k=round(orgf/Fs*Nt);
estf=round(k*Fs/Nt);
s_tones=s_tones(1:205,:);
for i=[1:size(s_tones,2)]
s_tone=s_tones(:,i);
p=audioplayer(s_tone,Fs);
play(p)
pause(0.5)
ydft(:,i)=goertzel(s_tone,k+1);
subplot(4,3,i),stem(estf,abs(ydft(:,i)),'.');
end
l_ydft=ydft(1,4,:);
h_ydft=ydft(5:7,:);
[lf_max,lf_num]=max(abs(l_ydft));
[hf_max,hf_num]=max(abs(h_ydft));
for i=[1:size(s_tones,2)]
f_num(i)=(lf_num(i-1))*3+hf_num(i);
end
disp('The phone number you input is')
number=f_num
程序运行时在MATLAB命令窗中出现的提示信息“input the tones of phone number,num=”后输入“[1 3 8 5 2 4 3 7 11 6 9]”,程序运行结果为
The phone number you input is
number=
1 3 8 5
2 4
3 7 11 6 9
相应解码信号的频谱图如图1所示。
图 1 解码信号的频谱图
四、参考文献
[1].张威.MATLAB基础与编程入门.[M].科技大学出版社,2006.
[2].丁玉美.高西全.数字信号处理.[M].清华大学出版社,2006.
[3].潘巍. 章兴武.仿真建模与MATLAB实用教程.北京:清华大学出版社,2012.
[4].张宗橙,张玲华,曹雪虹.数字信号处理与应用[M].南京:东南大学出版社,1997.
[5].曹弋.MATLAB在电类专业课程中的应用:教程与实训.北京:机械工业出版社,
2016.