Цитата(Make_Pic @ Jul 19 2005, 09:09)
Спасибо за ответ. По декодированию DTMF я чуток разбираюсь.
Еще такой вопрос: допустим я обработал входной синал по алгоритму Гертцеля, тобишь пропустил через шесть полосовых DFT входной сигнал, как лучше из отфильтрованных массивов определить частоту с точностью до герца, да и возможно такое?
Алгоритм Goertzel'я подразумевает применение не фильтров непрерывного действия, а "сбрасываемых" фильтров. В фазе накопления он только "всасывает" входные данные заданное число отсчетов. Затем, путем несложного преобразования, находится амплитуда сигнала в фильтре, т.е, выходом его является одно-единственное число. После этого память фильтра должна быть сброшена в 0, т.к. колебания в фильтре теоретически могут нарастать до бесконечности, а реально - до переполнения. Если мне не изменяет память, получить информацию о частоте сигнала в данном фильтре невозможно (мешает неоднозначность).
В свое время для быстрого и точного определения частотного сдвига я использовал следующий "радиотехнический" способ, основанный на том, что фазовый сдвиг резонатора второго порядка на центральной частоте равен точно 90 град. Итак:
1. Берем фильтры, как у Goertzel'я, обеспечив их устойчивость путем уножения коэффициентов A1 и A2 на X и X^2 соответственно, где X - близкая, но меньше 1 величина (0,95-0,98).
2. Обрабатываем сигнал таким фильтром 2 раза, получаем 2 выходных последовательности, после первой и второй фильтрации.
3. Перемножаем их и фильтруем результат с помощью ФНЧ.
4. Все!!! Число в ФНЧ пропорционально сдвигу частоты (точнее, его синусу).
Предлагаю перед реализацией этого способа все тщательно отмоделировать, т.к. есть небольшие нюансы, с которыми Вам самому будет приятно разделаться. Сделаю только подсказку, что точная оценка частоты будет только в установившемся режиме работы фильтров.