所以我试图通过读取傅里叶分析图的[x,y]坐标来确定DTMF波形文件中拨打的数字。数字是:251216。这是我的Matlab代码:
% Tone Dialling %
[y,Fs] = audioread('tones.wav');
n = length(y);
p = abs(fft(y));
f = (Fs/n)*(0:n-1);
plot(f,p);
axis([500 1400 0 1000])
xlabel('f(Hz)')
title('Power')
这对应于以下图:
现在这应该有6个峰值,但不是!我哪里错了?剪辑是一个6秒的剪辑,每1秒后播放一次脉冲。
感谢任何帮助。
答案 0 :(得分:1)
DTMF信号中的每个音调由两个特定频率组成的音调组成。
1209 Hz 1336 Hz 1477 Hz 1633 Hz
697 Hz 1 2 3 A
770 Hz 4 5 6 B
852 Hz 7 8 9 C
941 Hz * 0 # D
如果您采用序列555555
的DTMF信号,您将只能看到构成fft图中数字5
的音调的两个频率。
在您的情况下,您的音调由以下频率组成:
4个独特的频率。因此信号中有四个峰值。音调1和2共享频率697 Hz,音调2和5共享频率1336 Hz,音调5和6共享频率770 Hz。
你的情节幅度应该能够让你指出频率在任何音调中的使用频率:
您以1400 Hz的频率切断了绘图,这是一个错误,因为DTMF音调6的分量为1477 Hz。