twofft.pas

来自「Delphi Pascal 数据挖掘领域算法包 数值算法大全」· PAS 代码 · 共 40 行

PAS
40
字号
PROCEDURE twofft(data1,data2: glnarray;
       VAR fft1,fft2: gl2narray; n: integer);
(* Programs using routine TWOFFT must define types
TYPE
   glnarray = ARRAY [1..n] OF real;
   gl2narray = ARRAY [1..2*n] OF real;
where n is the dimension of the real-valued data arrays. *)
VAR
   nn3,nn2,nn,jj,j: integer;
   rep,rem,aip,aim: real;
BEGIN
   nn := n+n;
   nn2 := nn+2;
   nn3 := nn+3;
   FOR j := 1 TO n DO BEGIN
      jj := j+j;
      fft1[jj-1] := data1[j];
      fft1[jj] := data2[j]
   END;
   four1(fft1,n,1);
   fft2[1] := fft1[2];
   fft1[2] := 0.0;
   fft2[2] := 0.0;
   FOR jj := 1 TO (n DIV 2) DO BEGIN
      j := 2*jj+1;
      rep := 0.5*(fft1[j]+fft1[nn2-j]);
      rem := 0.5*(fft1[j]-fft1[nn2-j]);
      aip := 0.5*(fft1[j+1]+fft1[nn3-j]);
      aim := 0.5*(fft1[j+1]-fft1[nn3-j]);
      fft1[j] := rep;
      fft1[j+1] := aim;
      fft1[nn2-j] := rep;
      fft1[nn3-j] := -aim;
      fft2[j] := aip;
      fft2[j+1] := -rem;
      fft2[nn2-j] := aip;
      fft2[nn3-j] := rem
   END
END;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?