Обобщая все, что будет сказано дальше, мы можем написать уравнение синтеза:
ФОРМУЛА 8-2
Уравнение синтеза.
x[i] – синтезируемый сигнал.
i – изменяется от 0 до N/2.
Re [k] и Im [k]– амплитуды косинусов и синусов, соответственно.
k – меняется от 0 до N/2.
Иными словами, любой сигнал из N точек x[i] может быть создан суммированием N/2+1 косинусных волн и N/2 + 1 синусных волн. Амплитуды косинусных и синусных волн содержатся в массивах Re [k] и Im [k], соответственно. Уравнение синтеза перемножает эти амплитуды на базовые функции, создавая набор масштабированных синусных и косинусных волн. Сложение этих масштабированных синусных и косинусных волн формирует сигнал временной области x[i].
В выражении 8-2 массивы называются Im [k] и Re [k], вместо Im X [k] и Re X [k]. Это вызвано тем, что амплитуды, необходимые для синтеза, (названные в этом обсуждении Im [k] и Re [k]) слегка отличаются от сигналов частотной области (обозначены Im X [k] и Re X [k]). Это влияние фактора масштабирования, о котором мы упоминали ранее. Хотя это преобразование всего лишь нормализация, оно часто приводит к ошибкам при программировании. Будьте внимательны! В формульном выражении преобразование выглядит следующим образом:
ФОРМУЛА 8-3
Преобразование сигналов частотной области в амплитуды синусов, необходимых для синтеза сигнала временной области. Как обычно, N – число точек в сигнале, k имеет нумерацию от 0 до N/2.
За исключением двух специальных случаев:
Предположим, вам представлена частотная область, и предлагается синтезировать сигнал временной области. Для начала вы должны найти амплитуды синусов и косинусов. Другими словами, взяв Im X [k] и Re X [k] вы должны найти Im [k] и Re [k]. Формула 8-3 показывает, как это сделать математически. В компьютерной программе необходимо выполнить три действия. Первое, разделить все величины в частотной области на N/2. Второе, изменить знак перед всеми мнимыми величинами. Третье, разделить первую и последнюю величину в реальной части, Re X [0] и Re X [N/2], на 2. Это обеспечит величину амплитуд, необходимую для синтеза по формуле 8-2. Взятые вместе формулы 8-2 и 8-3 определяют инверсное ДПФ.
Целиком инверсное ДПФ в компьютерной программе показано в таблице 8-1. Имеется два способа программирования синтеза (по формуле 8-2), и оба они показаны. В первом способе, каждая из масштабированных синусоид вычисляется один раз и суммируется в аккумуляторе, процесс заканчивается получением сигнала временной области. При втором способе, каждый отсчет сигнала временной области вычисляется один раз, как сумма всех соответствующих отсчетов косинусных и синусных волн. Оба метода дают тот же самый результат. Разница между этими двумя программами очень не большая: внутренняя и внешняя петли циклов меняются местами.
100 ИНВЕРСНОЕ ДИСКРЕТНОЕ ПРЕОРАЗОВАНИЕ ФУРЬЕ
110 'Сигнал временной области содержится в XX[ ], он вычисляется из сигнала
120 'частотной области, который содержится в REX[ ] и IMX[ ].
130 '
140 DIM XX[511] 'XX[ ] содержится сигнал временной области
150 DIM REX[256] 'REX[ ] сдержится реальная часть сигнала частотной области
160 DIM IMX[256] 'IMX[ ] содержится мнимая часть сигнала частотной области
170 '
180 PI = 3.14159265 Установка константы, PI
190 N% = 512 'N% число точек в XX[ ]
200 '
210 GOSUB XXXX 'Воображаемая подпрограммы для загрузки REX[ ] и IMX[ ]
220 '
240 ' 'Нахождение амплитуд косинусных и синусных волн по форм. 8.3
250 FOR K% = 0 TO 256
260 REX[K%] = REX[K%] / (N%/2)
270 IMX[K%] = -IMX[K%] / (N%/2)
280 NEXT K%
290 '
300 REX[0] = REX[0] / N%
310 REX[256] = REX[256] / N%
320 '
330 '
340 FOR I% = 0 TO 511 'обнуление XX[ ] перед аккумуляцией
350 XX[I%] = 0
360 NEXT I%
370 '
380 ' Формула 8-2 СИНТЕЗ #1. Цикл через каждую частоту
390 ' по целой длине косинусных и синусных волн
400 ' и хранение их в аккумуляторе XX[ ]
410 '
420 FOR K% = 0 TO 256 'K% цикл через каждый отсчет в REX[ ] и IMX[ ]
430 FOR I% = 0 TO 511 'I% цикл через каждый отсчет в XX[ ]