[an error occurred while processing this directive]
|
Вариант №1.
Если в МК нет умножителя:
Имеем входной сигнал X. Дальше он проходит через компаратор:
| -1 при Х<0
x = {
| +1 при X>=0
ну или в более правильном виде -
x=sign(X)
N-1
---
Y = \ x[n]*sign(cos(2*pi*n*Fx/Fs))
/
---
n=0N-1
---
Z = \ x[n]*sign(sin(2*pi*n*Fx/Fs))
/
---
n=0
____________
/ 2 2
E = \/ Y + Z
Получаем число, пропорциональное энергии сигнала на частоте Fx. Корень естественно можно не считать, так как квадрат энергии нас тоже устроит. Возведение в квадрат - по таблице.
Ну и последнее:
2
| 0, если E < Thr
T = { 2
| 1, если E >= Thr
Thr - выбранный порог срабатывания детектора. T - выходной сигнал, 1 означает что требуемая частота присутствует в спектре входного сигнала и обладает достаточной энергией.Этот метод полностью аналогичен преобразованию Фурье для одной частоты Fx.
Вариант №2:
А если в МК есть нормальный умножитель (16 бит х 16 бит) - то используется фильтр Герцеля, который в общем-то тоже аналогичен преобразованию Фурье в 1 точке. Про это я расписывать не буду, в гугле можно тучу информации найти спросив про "Goertzel filter"
ЗЫ
Если где ошибся - подправьте....
E-mail: info@telesys.ru