Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вещественное значение частоты
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
nameless
Прошу сильно не пинать.
Есть вектор отсчетов, полученных на интервале, в который укладывается пусть 0.1 - 10 периодов гармонического сигнала. То есть некратная (вещественная) частота (вернее оценка частоты) нас интересует. После дискретного преобразования Фурье ищем центр тяжести:
Ц = (SUMM(i=0 to [N/2]-1) of i*W(i)^2] / SUMM(i=0 to [N/2]-1) of W(i)^2] (у Гоноровского подсмотрел такой способ нахождения центра тяжести). Здесь W = sqrt(A^2 + B^2), A = SUMM(i=0 to N/2 - 1) of X(i)*sin(2*pi*i*K/N) B = ... понятное дело с косинусом. К = 0, 1, 2 ... N/2 - 1 целочисленный(!) Так вот ошибка при моделировании в районе Ц меньше 2 достигает 100%. Дальше - меньше, но не устраивает никак. Ткните носом пожалуйста.
HFSSLer
Мне кажется, надо сначала посчитать ДПФ, модули в квадрате, потом найти номер отсчета максимума, а затем по трем отсчетам найти ваш центр, для уточнения.
ivan219
Модули в квадрате дают большую ошибку.
Накладываем окно после ДПФ и по трём точкам находим вершину пораболы.
Код
A := (Y3 - (X3 * (Y2 - Y1) + X2 * Y1 - X1 * Y2) / (X2 - X1)) / (X3 * (X3 - X2 - X1) + X1 * X2);
B := (Y2 - Y1) / (X2 - X1) - A * (X1 + X2);

Result := - B / (2 * A);

Подобная тема у же обсуждается здесь. http://electronix.ru/forum/index.php?showtopic=84446
nameless
Y2 - это максимум в спектре? Я правильно понял?
ivan219
Да Y2 и X2 это коорденаты максимального бина. X1, Y1 и X3, Y3 это боковые бины. Соответственно (-1: 0: 1)

Упрощенный вареант.
Код
Result := (Y2 - Y1) / (2 * Y2 - Y1 - Y3) + X2 - 0.5;

X2, Y2 коорденаты максимального бина Y1, Y2 значения боковых бинов.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.