Давайте перейдем к лучшему способу, стандартному методу вычисления ДПФ. Покажем этот метод на примере. Предположим, мы пытаемся вычислить ДПФ для 64-точечного сигнала. Это означает, что нам необходимо вычислить 33 точки в реальной части и 33 точки в мнимой части частотной области. В этом примере мы покажем вычисление только одного отсчета, ImX[3], то есть амплитуду синусной волны, которая делает три полных колебания между точками 0 и 63. Все другие величины в частотной области вычисляются подобным образом.
Рисунок 8-8 иллюстрирует использование корреляции для вычисления ImX[3]. Рисунки (а) и (b) показывают пример двух сигналов временной области, названных x1[ ] и x2[ ], соответственно. Первый сигнал, x1[ ], состоит только из одной синусоиды, делающей три колебания меду точками 0 и 63. В противоположность этому, x2[ ] состоит из нескольких синусных и косинусных волн, ни одна из которых не делает три колебания между точками 0 и 63. Эти два сигнала иллюстрируют, что должен делать алгоритм для вычисления ImX[3]. Для x1[ ] алгоритм должен получить величину равную 32, амплитуду синусной волны представленной в сигнале (с учетом коэффициента масштабирования согласно формуле 8-3). Для x2[ ] должна получиться нулевая величина, свидетельствующая о том, что данная частная синусоида не присутствует в сигнале.
РИСУНОК 8-8
Два примера сигналов (а) и (b), анализируемых на наличие в них базовых функций, показанных в (с) и (d). Рисунки (е) и (f) показывают результат перемножения анализируемых сигналов на базовые функции. Рисунок (е) имеет среднее значение 0,5, что свидетельствует о наличии базовой функции с амплитудой 1 в анализируемом сигнале. (f) имеет нулевое среднее значение, что свидетельствует об отсутствии базовой функции в x2[ ].
Концепция корреляции была представлена в главе 7. Как вы помните, для обнаружения сигнала известной формы в исследуемом сигнале необходимо перемножить эти два сигнала и сложить все точки полученного сигнала. Число, полученное в результате этой процедуры, является мерой похожести этих двух сигналов. Рисунок 8-8 иллюстрирует этот подход. Рисунки (с) и (d) показывают сигнал, который мы сравниваем на похожесть, - синусоиду с тремя колебаниями между отсчетами 0 и 63. Рисунок (е) показывает результат перемножения (а) и (с). Рисунок (f) показывает результат перемножения (b) и (d). Сумма всех точек в (е) равна 32, в то время как сумма всех точек в (f) равна нулю. Таким образом, мы нашли желаемый алгоритм.
Другие отсчеты в частотной области вычисляются точно так же. Эта процедура формализуется в следующем уравнении анализа, математических формулах для нахождения сигналов частотной области по сигналам временной области:
ФОРМУЛА 8-4
Уравнения анализа для ДПФ.
x[i] – анализируемый сигнал временной области
ReX[k] и ImX[k] – вычисляемые сигналы частотной области.
i – меняется от 0 до N-1
k – меняется от 0 до N/2
Другими словами, каждый отсчет в частотной области находится перемножением сигнала временной области на рассматриваемые синусные и косинусные волны и суммированием результатов умножения. Если кто-нибудь спросит вас, что вы делаете, уверенно говорите: «Я ищу корреляцию входного сигнала с базовыми функциями». Таблица 8-2 показывает компьютерную программу, которая вычисляет ДПФ этим способом.
Уравнения анализа не требуют специального выражения для первой и последней точки в отличие от уравнения синтеза. Имеется, однако, знак минуса перед мнимой частью в формуле 8-4. Так же как и раньше, этот знак минус делает реальное ДПФ совместимым с комплексным ДПФ, и не всегда учитывается.
Для правильной работы этого корреляционного алгоритма, базовые функции должны обладать интересным свойством: каждая из них должна быть совершенно некоррелирована со всеми другими. Это означает, что если вы перемножите любые две базовые функции, то сумма полученных точек должна быть равна нулю. Базовые функции, обладающие этим свойством, называются ортогональными. Существует много ортогональных базовых функций: квадратные волны, треугольные волны, импульсные и т.д. Сигналы могут быть разложены на эти базовые ортогональные функции, так же как и на синусоиды. Это не означает, что это полезно, но только, что это возможно.
Как было показано в таблице 8-1, инверсное ДПФ имеет два способа выполнения в компьютерной программе. Разница связана с тем, что внутренняя и внешняя петли циклов меняются местами. Это не меняет результат вычислений, но меняет ваш взгляд на выполнение программы. Программа ДПФ в таблице 8-2 может быть изменена таким же образом, переменой мест внутренней и внешней петли циклов в линиях от 310 до 380. Так же как и раньше, результат вычислений не меняется, но меняется ваш взгляд на процесс вычисления. (Эти два разных взгляда на ДПФ и инверсное ДПФ могут быть описаны как «входной алгоритм» и «выходной алгоритм» аналогично свертке).
100 'ДИСКРЕТНОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ (ДПФ)
110 'Сигнал частотной области храниться в REX[ ] и IMX[ ], вычисляется из
120 'сигнала временной области, который хранится в XX[ ].
130 '
140 DIM XX[511] 'XX[ ] хранится сигнал временной области
150 DIM REX[256] 'REX[ ] хранится реальная часть сигнала частотной области
160 DIM IMX[256] 'IMX[ ] хранится мнимая часть сигнала частотной области
Программа в таблице 8-2 написана таким образом, что показывает воздействие всех отсчетов временной области на отдельный отсчет в частотной области. То есть, программа вычисляет каждую величину частотной области в отдельности, а не как группу. Если внутренний цикл и внешний цикл поменять местами, то программный цикл через каждый отсчет во временной области будет вычислять вклад этой точки в частотную область. Целиком частотная область находится сложением этих вкладов от отдельных точек временной области. Отсюда возникает следующий вопрос: какова природа влияния отдельного отсчета во временной области на создание частотной области? Ответ заключается в интересном аспекте анализа Фурье, называемом двойственность (duality).