- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一.DTMF的原理
一. DTMF的原理
DTMF是用两个特定的单音频组合信号来代表数字信号以实现其功能的一种编码技术。两个单音频的频率不同,代表的数字或实现的功能也不同。这种电话机中通常有16个按键,其中有10个数字键0~9和6个功能键*、#、A、B、C、D。由于按照组合原理,一般应有8种不同的单音频信号。因此可采用的频率也有8种,故称之为多频,又因它采用从8种频率中任意抽出2种进行组合来进行编码,所以又称之为“8中取2”的编码技术。
根据CCITT的建议,国际上采用的多种频率为687Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz和1633Hz等8种。用这8种频率可形成16种不同的组合,从而代表16种不同的数字或功能键,具体组合见下表1:
??????? 行频/Hz???? 列频/Hz
1209
1336
1477
1633
697
1
2
3
A
770
4
5
6
B
852
7
8
9
C
941
*
0
#
D
二.DTMF信号的产生:
首先来分析下正弦信号的产生算法和抽样频率频率选取。
设有一系统:其传输函数H(z)没有零点,只有一对处在单位圆上的共扼的极点,则单位冲击响应为恒幅度的振荡,即产生了正弦信号。
其中:,,
相位信息:
时域单位冲激响应:
然后,由两个不同频率的正弦信号叠加而成来模拟双音频信号,有上面的式子可得:
y(n)=h1(n)+h2(n). (h1(n)为具有行频的正弦信号,h2(n)为具有列频的正弦信号)
Goertzel算法实质是一个两极点的IIR滤波器,其算法原理框图如下图: DTMF(双音多频)是用两个特定的单音频组合信号来代表数字信号
的一种编码技术。两个单音的频率不同,代表的数字或实现的功
能也不同。可采用8种频率代表电话机上的16个按键,10个数字
键0~9和6个功能键*、#、A、B、C、D。具体的频率组合见参考书
。要求:
(1) 根据键盘输入的符号,利用MATLAB产生对应的DTMF信号;
(2) 分别利用FFT算法和Goertzel算法计算该DTMF信号的频谱并
画出频谱图;(3) 根据频谱图确定DTMF信号所代表的符号是否和
输入的符号一致。
s = input (n - ) ; % 输入数字个数
l = input (n0 -) ;
out = zeros (1600*s + l,1) ;
tab = [941 1336 ;697 1209 ;697 1336 ;697 1477 ;770 1209
;770 1336 ;
770 1477 ;852 1209 ;852 1336 ;852 1477 ] ; % 建立表矩阵
for i = 1 :s
k = input (0 - 9 - ) ; % 输入具体的数字
f1 = tab(k + 1 ,1) / 8000 ; % 对信号取样
f2 = tab(k + 1 ,2) / 8000 ;
for j = 1 :800
z = sin(f1*j*2*pi) + sin(f2*j*2*pi) ; % 两信号叠加
out (1600*(i - 1) + j + l ,1) = z ;
out (1600*(i - 1) + j + 800 + l ,1) = 0 ;
end
end
out = out./2 ;
subplot (211) ;plot (out) ;
n = 256 ;
r = zeros(8*s ,n/4) ;
a = out ;
subplot (212) ;plot (a) ;
for i = 1:8*s
x= a ((i-1)*200 + 1:i*200) ;
y=fft (x ,n) ; % 作FFT 分析
p= abs(y) ; % 计算幅频谱
r(i ,:) = p (1:n/ 4);
end
for i = 1 :8*s % 以下是根据FFT 分析结果,对信号解码
c= r (i ,:) ;
z=find(c 40) ;
c(z) = zeros(size(z)) ; b= nnz(c) ;
if (b==2)
q =find(c) ;
if (q(1)==23)
if (q(2)==40)
res(i)=1 ;
elseif (q(2)==44)
res(i)=2 ;
elseif (q(2)==48)
res(i)=3 ;
end
elseif (q(1)==26)
if (q(2)==40)
res(i)=4 ;
elseif (q(2)==44)
res(i)=5 ;
elseif (q(2)==48)
res(i)=6 ;
end
elseif (q(1)==28)
if (q(2)==4
文档评论(0)