_Andu_
Feb 18 2009, 07:02
Расчитываю действующие сигнала первой гармоники по алгоритму Герциля. Частота которой вычисляется по формуле:
F(n)=k/N*Fs , где Fs - частота дискретизации. N - число отсчетов.
Так вот например F(n)=50, Fs =1000 N =20 => k=1. все нормально считает
как я понял k должно быть целое число и в принципе это проверил
F(n)=45, Fs =1000 N =20 => k=0,9.не нормально считает
если взять F(n)=45, Fs =900 N =20 => k=1 все нормально считает
но я не могу поменять Fs. Можно ли это както обойти если можно то как?
Алгоритм Герцеля - это реализация (сильно усеченного) дискретного преобразования Фурье (ДПФ).
Со всей присущей ДПФ дискретностью в частотной области. Соответственно, если нужно обнаруживать произвольно
расположенные дискретные частоты, то для того чтобы использовать алгоритм Герцеля необходимо
приблизить с достаточно высокой точностью эти частоты частотами
F(n)=k/N*Fs гдe k - целое
А это можно сделать только одним способом - увеличивая N. Тогда можно приблизиться к нужной частоте достаточно близко. На Analog Device были даже раньше учебные материалы как выбрать N для DTMF из этих соображений.
Однако при этом ухудшается временное разрешение, но иначе - никак... Если Герцель.
Если обнаруживаемые частоты находятся далеко друг от друга, то можно использовать интерполяцию для вычисления амплитуд для промежуточных частот (между отсчетами ДПФ). Но это уже не Герцель