📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
F:TextFile;
implementation
//PROGRAM D10R2
//Driver for routine TWOFFT
uses
unit2;
{$R *.DFM}
procedure PRNTFT(DATA:array of real; NN2:integer);
const
s1 = '%13.6f'; s2 = '#0';
var
NN,N,M,MM:integer;
begin
Writeln(F,' n Real H(n) Imag H(n) Real H(N-n) Imag H(N-n)');
Writeln(F,' ',FormatFloat('0',0),Format(s1,[DATA[1]]),
Format(s1,[DATA[2]]),Format(s1,[DATA[1]]),Format(s1,[DATA[2]]));
For NN:=2 To (((NN2 div 2) + 2) div 2) do
begin
N:= 2 * NN -1;
M:= (N-1) div 2;
MM:=NN2 + 2 - N;
Writeln(F,' ',FormatFloat(s2,M),Format(s1,[DATA[N]]),
Format(s1,[DATA[N+1]]),Format(s1,[DATA[MM]]),Format(s1,[DATA[MM+1]]));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
s1='%13.6f'; s2 = '##';
N = 32; N2 = 2 * N; PER = 8; PI = 3.1415926;
var
DATA1,DATA2:array[0..32] of real; FFT1,FFT2:array[0..64] of real;
I,II,ISIGN,J:integer; X:real;
begin
//输出计算结果到文件
AssignFile(F, 'd:\delphi_shu\p10\d10r2.dat');
Rewrite(F);
For I:=1 To N do
begin
X:= 2* PI * I / PER;
DATA1[I]:= Round(Cos(X));
DATA2[I]:= Round(Sin(X));
end;
TWOFFT(DATA1, DATA2, FFT1, FFT2, N);
Writeln(F, 'Fourier transform of first function:');
PRNTFT(FFT1, N2);
Writeln(F, 'Fourier transform of second function:');
PRNTFT(FFT2, N2);
//Invert transform
ISIGN:= -1;
FOUR1(FFT1, N, ISIGN);
Writeln(F, 'Inverted transform = first function:');
PRNTFT(FFT1, N2);
FOUR1(FFT2, N, ISIGN);
Writeln(F, 'Inverted transform = second function:');
PRNTFT(FFT2, N2);
CloseFile(F);
//屏幕显示计算结果
memo1.Lines.LoadFromFile('d:\delphi_shu\p10\d10r2.dat');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -