MATLAB仿真技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.

相关文档
最新文档