Рисунок 8-4 показывает пример ДПФ для N = 128. Сигнал временной области состоит из массива x[0].....x[127]. Сигнал частотной области содержит два массива ReX[0]...ReX[64] и ImX[0]...ImX[64]. Заметим, что 128 точек временной области соответствуют 65 точкам в каждом массиве частотной области, с номерами частот от 0 до 64. То есть, N точек временной области соответствуют N/2 + 1 точек частотной области (не N/2 точек). Забывание этой дополнительной точки есть обычная ошибка при программировании ДПФ.
Горизонтальная ось в частотной области может быть обозначена четырьмя различными способами, все они общеприняты в ЦОС. При первом способе горизонтальная ось размечена номерами отсчетов от 0 до 64 (N/2). В этом случае индексы в частотной области есть целые числа, например, ReX[k] и ImX[k], где k меняется от 0 до N/2 с шагом единица. Программисты любят этот способ, потому что он соответствует коду, который они используют для доступа к массиву. Это обозначение используется на рисунке 8-4b.
РИСУНОК 8-4
Пример ДПФ. ДПФ преобразует сигнал временной области, x[ ], в сигналы частотной области, ReX[ ] и ImX[ ]. Горизонтальная ось в частотной области может быть отмечена тремя способами: (1) как массив индексов от 0 до N/2; (2) как часть частоты дискретизации от 0 до 0,5; (3) как натуральная частота от 0 до p. В этом примере (b) использует первый метод, (с) – второй.
При втором методе, который показан в (с), горизонтальная ось размечена в долях частоты дискретизации (fraction of the sampling rate). Это означает, что величина вдоль горизонтальной оси всегда изменяется от 0 до 0,5; так как дискретные данные могут содержать частоты только от постоянного тока до 1\2 частоты дискретизации. Индекс, используемый для этого обозначения, есть f. Реальная и мнимая части записываются как ReX[f] и ImX[f], где f принимает значения N/2 + 1 величин, равномерно расположенных между 0 и 0,5. Преобразование первого обозначения, k, во второе, f, заключается в делении горизонтальной оси на N. То есть, f = k/N. Большинство графиков в этой книге используют этот второй метод, фокусируя внимание на том, что дискретный сигнал может содержать частоты только от 0 до 0,5 частоты дискретизации.
Третий метод – это просто второй, за исключением того, что горизонтальная ось умножена на 2p. Индекс, используемый для разметки - w. При этом обозначении реальная и мнимая части записываются как: ReX[w] и ImX[w], где w принимает значения N/2 + 1 величин, равномерно расположенных между 0 и p. Параметр w называется натуральная частота и имеет размерность в радианах. Основная идея заключается в том, что в цикле 2p радиан. Математики любят этот способ обозначений, потому что он позволяет короче записать формулы. Например, рассмотрим запись косинуса для каждого из этих обозначений. Используя k: c[n] = cos(2pkn/N), используя f: c[n] = cos(2pfn), используя w: c[n] = cos(wn).
Четвертый способ заключается в разметке горизонтальной оси в величинах аналогичных частотам, используемых в практических приложениях. Например, если в системе применяется частота дискретизации 10 кГц (т.е. 10 000 отсчетов в секунду), то на графике частота будет меняться от 0 до 5 кГц. Этот способ хорош для представления частотных данных в обозначениях, используемых на практике. Недостаток заключается в том, что он привязан к частному уровню дискретизации, и поэтому не применим для развития общих алгоритмов ЦОС, таких как создание цифровых фильтров.
Все эти четыре способа обозначения используются в ЦОС, и вам необходимо хорошо разобраться с преобразованием их друг в друга. Это относится как к графикам, так и к математическим формулам. Чтобы определить какой способ обозначения используется, посмотрите на независимую величину и уровень ее величины. Вы можете увидеть одно из четырех обозначений: k (или какой-либо другой целочисленный индекс), меняющийся от 0 до N/2; f, меняющееся от 0 до 0,5; или частоту в герцах, меняющуюся от постоянного тока (DC) до одной второй частоты дискретизации.