DTMF,DFT窗口长度

时间:2013-11-27 15:39:39

标签: matlab dft dtmf

我们在学校有一项任务是创建一个DTMF​​解码器,但是很难理解需要做什么,以及如何做。首先,我们需要使用卷积计算信号的能量。我们通过利用窗口长度和输入信号的绝对值来实现:

SmoothEnergyOfInputSignal = conv(abs(X), ones(1,winlen)/winlen); %moving average

现在,我们不知道如何获得正确的窗口长度。平滑后的能量用于分割信号,然后利用基矢量确定信号中的不同频率(?) dtmf脉冲至少40ms,相隔至少40ms的静音。 采样频率为8kHz,信号长约17601个样本。 我们认为通过做fs * 0.04我们得到窗口长度。 0.04 = 40ms,但现在平滑的能量信号被移位,因此这些段超出了输入信号的最大样本。

[Sound, fs] = audioread('dtmf_all.wav');
winlen = fs*0.04 
E = conv(abs(Sound),ones(1, winlen)/winlen)

长话短说:我们如何计算“正确”的窗口长度?

提前致谢。

编辑:指令已更新,我们不应该使用卷积。我们应该使用filter()

0 个答案:

没有答案