Программа 8.1.
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 'Число пи
190 N% = 512 'N% - количество элементов в массиве XX[ ]
200 '
210 GOSUB XXXX 'Подпрограмма загрузки данных в массивы REX[ ] и IMX[ ]
220 '
230
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] / 2
310 REX[256] = REX[256] / 2
320 '
330 '
340 FOR I% = 0 TO 511 'Обнуление массива XX[ ], используемого для накопления
350 XX[I%] = 0
360 NEXT I%
370 '
380 ' Формула 8-2. СИНТЕЗ. СПОСОБ 1. Цикл по номеру частоты в каждой своей итерации
390 ' рассчитывает пару синусного и косинусного сигналов на всей их длине, которые
400 ' затем накапливаются в аккумуляторе ХХ [ ]
410 '
420 FOR K% = 0 TO 256 'K% - индекс, пробегающий по всем элементам REX[ ] и IMX[ ]
430 FOR I% = 0 TO 511 'I% - индекс, пробегающий по всем элементам XX[ ]
440 '
450 XX[I%] = XX[I%] + REX[K%] * COS(2*PI*K%*I%/N%)
460 XX[I%] = XX[I%] + IMX[K%] * SIN(2*PI*K%*I%/N%)
470 '
480 NEXT I%
490 NEXT K%
500 '
510 END
Другая версия кода в строках 380…510
380 ' Формула 8-2. СИНТЕЗ. СПОСОБ 2. В каждой итерации цикла рассчитывается
390 ' один отсчёт сигнала во временной области путём суммирования соответствующих
400 ' отсчётов синусных и косинусных сигналов
410 '
420 FOR I% = 0 TO 511 'I% - индекс, пробегающий по всем элементам массива XX[ ]
430 FOR K% = 0 TO 256 'K% - индекс, пробегающий по всем элементам REX[] и IMX[]
440 '
450 XX[I%] = XX[I%] + REX[K%] * COS(2*PI*K%*I%/N%)
460 XX[I%] = XX[I%] + IMX[K%] * SIN(2*PI*K%*I%/N%)
470 '
480 NEXT K%
490 NEXT I%
500 '
510 END