Matlab DTMF,DFT窗口长度

Matlab DTMF,DFT窗口长度,matlab,dft,dtmf,Matlab,Dft,Dtmf,我们在学校有一项任务,要制作一个DTMF解码器,但我们在理解需要做什么以及如何做方面遇到了困难。首先,我们需要使用卷积计算信号的能量。我们通过利用窗口长度和输入信号的绝对值来实现: SmoothEnergyOfInputSignal = conv(abs(X), ones(1,winlen)/winlen); %moving average 现在,我们不知道如何获得合适的窗口长度。平滑后的能量用于分割信号,然后利用基向量(?)确定信号中的不同频率 dtmf脉冲之间的间隔至少为40ms,静音间隔

我们在学校有一项任务,要制作一个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()