Добрый день! Ещё вопрос. Как я говорил - при попытке выполнить преобразование Фурье на микроконтроллере с фиксированной точкой я закладывал поворачивающие множители в виде: W_re (k,N) = 32768 * cos (- 2 * Pi * k/N) W_im (k,N) = 32768 * sin (- 2 * Pi * k/N) Множитель 32768 – для того, чтобы sin и cos представить в виде, большем 1. При таком подходе приходится делить (ну, понятно, просто сдвигать) часть результата в “бабочке” на 32768 (15 разрядов “вправо”), иначе FFT “разваливается” (простое преобразование Фурье не чувствительно к умножению = там просто общий результат возрастает в 32768 раз): A_re = A_re + (W_re * B_re – W_im * B_im)/32768 A_im = A_im + (W_re * B_im + W_im * B_re)/32768 B_re = A_re - (W_re * B_re – W_im * B_im)/32768 B_im = A_im - (W_re * B_im + W_im * B_re)/32768 (Потом, понятно, идёт масштабирование результата, чтобы не было переполнения по алгоритму “блочной плавающей точки”.) Наверное, есть какое-то общеизвестное более изящное решение. В Интернете пока не нашёл, может кто посоветует статью или исходник?
"Отщипнул" - я имел в виду, что огносительно большая часть энергии сигнала отбрасывается при домножении на оконную функцию. (Представленное на рисунке окно Хемминга, пожалуй, самый "щадящий" вариант окна). Может, по Вашему опыту, я не так её реализовал - должна бть более "плоская" вершина?
|