DTMF, длина окна DFT

В школе у ​​нас есть задание по созданию DTMF-декодера, но у нас возникают проблемы с пониманием того, что и как нужно делать. Прежде всего нам нужно рассчитать энергию сигнала с помощью свертки. Мы делаем это, используя длину окна и абсолютное значение входного сигнала:

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

Теперь мы не знаем, как получить правильную длину окна. Сглаженная энергия используется для сегментирования сигнала, а затем для определения различных частот в сигнале с использованием базисных векторов (?). Импульсы dtmf, по меньшей мере, 40 мс разделены, по меньшей мере, 40 мс паузы. Частота дискретизации составляет 8 кГц, а наш сигнал имеет длину около 17601 выборки. Мы думали, что, выполнив команду fs*0.04, мы получим длину окна. 0,04=40 мс, но теперь сглаженный энергетический сигнал смещен, поэтому сегменты выходят за пределы максимальной выборки входного сигнала.

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

Короче говоря: как рассчитать "правильную" длину окна?

Заранее спасибо.

РЕДАКТИРОВАТЬ: инструкции были обновлены, и мы не должны использовать свертку. Мы должны использовать фильтр ()

0 ответов

Другие вопросы по тегам