📄 cosft.txt
字号:
Procedure COSFT(var Y:array of real; N, ISIGN:integer);
var
THETA,WR,WI,WPR,SUM,WTEMP,Y1,Y2,WPI,EVEN,ODD,ENF0,SUM0,SUME:real;
I,J,M,JJ:integer;
begin
THETA:=3.14159265358979 / N;
WR:=1;
WI:=0;
WPR:=-2 * Sqr(Sin(0.5 * THETA));
WPI:=Sin(THETA);
Sum:=Y[1];
M:=N div 2;
For J:=1 To M - 1 do
begin
WTEMP:=WR;
WR:=WR * WPR - WI * WPI + WR;
WI:=WI * WPR + WTEMP * WPI + WI;
Y1:=0.5 * (Y[J + 1] + Y[N - J + 1]);
Y2:=(Y[J + 1] - Y[N - J + 1]);
Y[J + 1]:=Y1 - WI * Y2;
Y[N - J + 1]:=Y1 + WI * Y2;
Sum:=Sum + WR * Y2;
end;
REALFT(Y, M, 1);
Y[2]:=Sum;
For JJ:=2 To M do
begin
J:=2*JJ;
Sum:=Sum + Y[J];
Y[J]:=Sum;
end;
If ISIGN = -1 Then
begin
EVEN:=Y[1];
ODD:=Y[2];
For JJ:=1 To M -1 do
begin
I:=2*JJ + 1;
EVEN:=EVEN + Y[I];
ODD:=ODD + Y[I + 1];
end;
ENF0:=2 * (EVEN - ODD);
SUM0:=Y[1] - ENF0;
SUME:=(2 * ODD / N) - SUM0;
Y[1]:=0.5 * ENF0;
Y[2]:=Y[2] - SUME;
For JJ:=1 To M -1 do
begin
I:=2 * JJ + 1;
Y[I]:=Y[I] - SUM0;
Y[I + 1]:=Y[I + 1] - SUME;
end;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -