亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ffts.pas

?? fft源代碼
?? PAS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):

  FFT_4(A);
  FFT_4(B);

  Gem     := c8 * (B[1].Re + B[1].Im);
  B[1].Im := c8 * (B[1].Im - B[1].Re);
  B[1].Re := Gem;
  Gem     := B[2].Im;
  B[2].Im :=-B[2].Re;
  B[2].Re := Gem;
  Gem     := c8 * (B[3].Im - B[3].Re);
  B[3].Im :=-c8 * (B[3].Re + B[3].Im);
  B[3].Re := Gem;

  Z[0] := ComplexAdd(A[0], B[0]); Z[4] := ComplexSub(A[0], B[0]);
  Z[1] := ComplexAdd(A[1], B[1]); Z[5] := ComplexSub(A[1], B[1]);
  Z[2] := ComplexAdd(A[2], B[2]); Z[6] := ComplexSub(A[2], B[2]);
  Z[3] := ComplexAdd(A[3], B[3]); Z[7] := ComplexSub(A[3], B[3]);
end;

procedure FFT_10(var Z: array of TComplex);
var
  A, B: array[0..4] of TComplex;
begin
   A[0] := Z[0];  B[0] := Z[5];
   A[1] := Z[2];  B[1] := Z[7];
   A[2] := Z[4];  B[2] := Z[9];
   A[3] := Z[6];  B[3] := Z[1];
   A[4] := Z[8];  B[4] := Z[3];

   FFT_5(A);
   FFT_5(B);

   Z[0] := ComplexAdd(A[0], B[0]); Z[5] := ComplexSub(A[0], B[0]);
   Z[6] := ComplexAdd(A[1], B[1]); Z[1] := ComplexSub(A[1], B[1]);
   Z[2] := ComplexAdd(A[2], B[2]); Z[7] := ComplexSub(A[2], B[2]);
   Z[8] := ComplexAdd(A[3], B[3]); Z[3] := ComplexSub(A[3], B[3]);
   Z[4] := ComplexAdd(A[4], B[4]); Z[9] := ComplexSub(A[4], B[4]);
end;

{
  Synthesize the FFT by taking the even factors and the odd factors multiplied by
  complex sinusoid
}
procedure SynthesizeFFT(Sofar, Radix, Remain: integer; var Y: array of TComplex);
var
  GroupOffset, DataOffset, Position: integer;
  GroupNo, DataNo, BlockNo, SynthNo: integer;
  Omega: double;
  S, CosSin: TComplex;
  Synth, Trig, Z: array[0..cMaxPrimeFactor - 1] of TComplex;

  // Local function
  procedure InitializeTrigonomials(Radix: integer);
  // Initialize trigonomial coefficients
  var
    i: integer;
    W: double;
    X: TComplex;
  begin
    W := 2 * pi / Radix;
    Trig[0] := Complex(1.0, 0.0);
    X := Complex(cos(W), -sin(W));
    Trig[1] := X;
    for i := 2 to Radix - 1 do
      Trig[i] := ComplexMul(X, Trig[i - 1]);
  end;

  // Local Function
  procedure FFT_Prime(Radix: integer);
  // This is the general DFT, which can't be made any faster by factoring because
  // Radix is a prime number
  var
    i, j, k, N, AMax: integer;
    Re, Im: TComplex;
    V, W: array[0..cMaxPrimeFactorDiv2 - 1] of TComplex;
  begin
    N := Radix;
    AMax := (N + 1) div 2;
    for j := 1 to AMax - 1 do begin
      V[j].Re := Z[j].Re + Z[n-j].Re;
      V[j].Im := Z[j].Im - Z[n-j].Im;
      W[j].Re := Z[j].Re - Z[n-j].Re;
      W[j].Im := Z[j].Im + Z[n-j].Im;
    end;

    for j := 1 to AMax - 1 do begin
      Z[j]   := Z[0];
      Z[N-j] := Z[0];
      k := j;
      for i := 1 to AMax - 1 do begin
        Re.Re := Trig[k].Re * V[i].Re;
        Im.Im := Trig[k].Im * V[i].Im;
        Re.im := Trig[k].Re * W[i].Im;
        Im.Re := Trig[k].Im * W[i].Re;

        Z[N-j].Re := Z[N-j].Re + Re.Re + Im.Im;
        Z[N-j].Im := Z[N-j].Im + Re.Im - Im.Re;
        Z[j].Re   := Z[j].Re   + Re.Re - Im.Im;
        Z[j].Im   := Z[j].Im   + Re.Im + Im.Re;

        k := k + j;
        if k >= N then
          k := k - N;
      end;
    end;

    for j := 1 to AMax - 1 do begin
      Z[0].Re := Z[0].Re + V[j].Re;
      Z[0].Im := Z[0].Im + W[j].Im;
    end;
  end;

// main
begin
  // Initialize trigonomial coefficients
  InitializeTrigonomials(Radix);

  Omega       := 2 * pi / (Sofar * Radix);
  CosSin      := Complex(cos(Omega), -sin(Omega));
  S           := Complex(1.0, 0.0);
  DataOffset  := 0;
  GroupOffset := 0;
  Position    := 0;

  for DataNo := 0 to Sofar - 1 do begin

    if Sofar > 1 then begin

      Synth[0] := Complex(1.0, 0.0);
      Synth[1] := S;
      for SynthNo := 2 to Radix - 1 do
        Synth[SynthNo] := ComplexMul(S, Synth[SynthNo - 1]);
      S := ComplexMul(CosSin, S);

    end;

    for GroupNo := 0 to Remain - 1 do begin

      if (Sofar > 1) AND (DataNo > 0) then begin

        Z[0]    := Y[Position];
        BlockNo := 1;
        repeat
          inc(Position, Sofar);
          Z[BlockNo] := ComplexMul(Synth[BlockNo], Y[Position]);
          inc(BlockNo);
        until BlockNo >= Radix;

      end else begin

        for BlockNo := 0 to Radix - 1 do begin
          Z[BlockNo] := Y[Position];
          inc(Position, Sofar);
        end;

      end;

      case Radix of
      2:  FFT_2(Z);
      3:  FFT_3(Z);
      4:  FFT_4(Z);
      5:  FFT_5(Z);
      8:  FFT_8(Z);
      10: FFT_10(Z);
      else
        // Any larger prime number than 5 (so 7, 11, 13, etc, up to cMaxPrimeFactor)
        FFT_Prime(Radix);
      end; //case

      Position := GroupOffset;
      for BlockNo := 0 to Radix - 1 do begin
        Y[Position] := Z[blockNo];
        Inc(Position, Sofar);
      end;
      GroupOffset := GroupOffset + Sofar * Radix;
      Position    := GroupOffset;
    end;
    inc(DataOffset);
    GroupOffset := DataOffset;
    Position    := DataOffset;
  end;
end;

procedure ForwardFFT(const Source: array of TComplex; var Dest: array of TComplex; Count: integer);
// Perform a FFT on the data in Source, put result in Dest. This routine works best
// for Count as a power of 2, but also works usually faster than DFT by factoring
// the series. Only in cases where Count is a prime number will this method be
// identical to regular DFT.
type
  PComplexArray = ^TComplexArray;
  TComplexArray = array[0..0] of TComplex;
var
  i: integer;
  FactorCount: integer;
  SofarRadix:  TIdx1FactorArray;
  ActualRadix: TIdx1FactorArray;
  RemainRadix: TIdx0FactorArray;
  TmpDest: PComplexArray;
begin
  if Count = 0 then exit;

  // Decompose the series with length Count into FactorCount factors in ActualRadix
  Factorize(Count, FactorCount, ActualRadix);

  // Check if our biggest prime factor is not too large
  if (ActualRadix[1] > cMaxPrimeFactor) then
    raise EMathError.Create(sErrPrimeTooLarge);

  // Setup Sofar and Remain tables
  RemainRadix[0] := Count;
  SofarRadix[1]  := 1;
  RemainRadix[1] := Count div ActualRadix[1];
  for i := 2 to FactorCount do begin
    SofarRadix[i]  := SofarRadix[i-1] * ActualRadix[i-1];
    RemainRadix[i] := RemainRadix[i-1] div ActualRadix[i];
  end;

  // Make temp copy if dest = source (otherwise the permute procedure will completely
  // ruin the structure
  if @Dest = @Source then begin
    GetMem(TmpDest, SizeOf(TComplex) * Count);;
    Move(Dest, TmpDest^, SizeOf(TComplex) * Count);
  end else begin
    TmpDest := @Dest;
  end;

  // Reorder the series so that the elements are already in the right place for
  // synthesis
  ReorderSeries(Count{, FactorCount}, ActualRadix, RemainRadix, Source, TmpDest^);

  // Free the temporary copy (if any)
  if @Dest = @Source then begin
    Move(TmpDest^, Dest, SizeOf(TComplex) * Count);
    FreeMem(TmpDest);
  end;

  // Synthesize each of the FFT factored series
  for i := 1 to FactorCount do
    SynthesizeFFT(SofarRadix[i], ActualRadix[i], RemainRadix[i], Dest);

end;

procedure InverseFFT(const Source: array of TComplex; var Dest: array of TComplex; Count: integer);
// Perform the inverse FFT on the Source data, and put result in Dest. It performs
// the forward FFT and then divides elements by N
var
  i: integer;
  S: TFloat;
  TmpSource: array of TComplex;
begin
  if Count = 0 then exit;

  // Since TmpSource is local, we do not have to free it again,
  // it will be freed automatically when out of scope
  SetLength(TmpSource, Count);

  // Create a copy with inverted imaginary part.
  for i := 0 to Count - 1 do
    with Source[i] do
      TmpSource[i] := Complex(Re, -Im);
  ForwardFFT(TmpSource, Dest, Count);

  // Scale by 1/Count, and inverse the imaginary part
  S := 1.0 / Count;
  for i := 0 to Count - 1 do begin
    Dest[i].Re :=   S * Dest[i].Re;
    Dest[i].Im := - S * Dest[i].Im;
  end;
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩在线视频| 91香蕉视频mp4| 欧美国产精品专区| 欧美群妇大交群的观看方式| 国产在线视视频有精品| 日日摸夜夜添夜夜添国产精品| 中文字幕欧美日韩一区| 日韩欧美一级二级三级| 在线精品国精品国产尤物884a| 成人午夜免费视频| 麻豆精品在线播放| 亚洲国产成人porn| 国产精品婷婷午夜在线观看| av亚洲精华国产精华精华| 麻豆精品视频在线观看| 一区二区三区在线视频免费| 国产精品欧美精品| 国产午夜精品久久久久久久 | 国产清纯白嫩初高生在线观看91| 91精品在线一区二区| 在线欧美日韩精品| 色综合一个色综合亚洲| av中文一区二区三区| 国产999精品久久| 国产一二精品视频| 激情偷乱视频一区二区三区| 日本视频免费一区| 日韩中文欧美在线| 天天爽夜夜爽夜夜爽精品视频| 一区二区不卡在线播放| 亚洲伊人色欲综合网| 亚洲男女毛片无遮挡| 自拍偷拍国产精品| 亚洲卡通动漫在线| 亚洲精品视频在线观看网站| 亚洲精品中文在线影院| 亚洲人成7777| 亚洲九九爱视频| 亚洲欧美日韩小说| 亚洲三级视频在线观看| 一区二区三区在线观看国产| 亚洲狠狠爱一区二区三区| 亚洲一区中文在线| 污片在线观看一区二区| 日韩黄色在线观看| 麻豆精品一区二区综合av| 久草这里只有精品视频| 国产精品亚洲视频| av毛片久久久久**hd| 一本大道久久a久久综合| 欧美无砖专区一中文字| 538prom精品视频线放| 日韩欧美三级在线| 久久精品日韩一区二区三区| 国产精品传媒视频| 亚洲午夜一区二区三区| 日韩电影一二三区| 国产在线国偷精品免费看| 成人涩涩免费视频| 色妞www精品视频| 欧美日韩黄色影视| 精品久久免费看| 国产精品的网站| 亚洲成av人片一区二区梦乃| 久久精品国产77777蜜臀| 成人一级视频在线观看| 欧洲av在线精品| 精品国产凹凸成av人导航| 国产欧美精品一区二区色综合朱莉| 亚洲图片欧美激情| 日本免费在线视频不卡一不卡二| 国产一区二区在线看| 91在线观看免费视频| 欧美乱妇20p| 欧美国产日产图区| 亚洲va韩国va欧美va精品| 国产精品一区二区在线播放| 在线精品视频一区二区三四| 精品精品国产高清a毛片牛牛| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 综合色中文字幕| 午夜影视日本亚洲欧洲精品| 国产一区二区在线视频| 欧美视频在线一区| 国产欧美一区二区三区在线老狼| 一区二区三区在线视频免费| 国产精品主播直播| 欧美色综合天天久久综合精品| 久久久久久久av麻豆果冻| 亚洲国产日韩综合久久精品| 国产精品一区二区无线| 欧美高清视频不卡网| 国产精品嫩草久久久久| 麻豆国产一区二区| 欧美日韩色一区| 中文字幕精品在线不卡| 青青草97国产精品免费观看无弹窗版| 99精品欧美一区二区蜜桃免费| 欧美v日韩v国产v| 亚洲综合丁香婷婷六月香| 成人一区二区三区视频| 日韩欧美国产综合| 亚洲一区二区欧美激情| 成人动漫一区二区三区| 日韩精品一区二区三区三区免费| 亚洲制服丝袜在线| 成人一级视频在线观看| 精品国产第一区二区三区观看体验| 亚洲一区二区中文在线| caoporn国产精品| 国产香蕉久久精品综合网| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧洲亚洲国产日韩| 亚洲色图清纯唯美| 福利电影一区二区三区| 久久午夜羞羞影院免费观看| 蜜桃免费网站一区二区三区| 欧美精品一二三四| 婷婷开心激情综合| 欧洲人成人精品| 国产亚洲精品中文字幕| 日本欧美一区二区| 欧美视频精品在线| 一级日本不卡的影视| 91免费小视频| 亚洲欧美色一区| 99精品国产热久久91蜜凸| 国产精品久久一卡二卡| 粉嫩aⅴ一区二区三区四区| 久久欧美一区二区| 国产在线国偷精品免费看| 久久夜色精品国产欧美乱极品| 免费观看一级欧美片| 日韩精品一区二区三区三区免费| 免费在线观看精品| 欧美电影精品一区二区| 久久99精品久久久| 久久丝袜美腿综合| 国产精品一区在线| 国产精品美女久久久久久久久久久| 粉嫩一区二区三区性色av| 国产精品久久久久永久免费观看| www.亚洲在线| 一区二区三区在线免费播放 | 日韩欧美激情四射| 麻豆精品在线观看| 久久久精品国产99久久精品芒果 | 亚洲sss视频在线视频| 欧美日韩一区 二区 三区 久久精品| 午夜精品一区二区三区电影天堂 | 国产三级欧美三级| 成人97人人超碰人人99| 一区二区在线观看视频| 欧美人牲a欧美精品| 捆绑变态av一区二区三区| 国产日韩影视精品| 色猫猫国产区一区二在线视频| 午夜电影一区二区| 久久先锋影音av| 色综合久久久久久久久久久| 午夜在线电影亚洲一区| 2023国产精品视频| 91免费视频网| 老司机一区二区| 成人欧美一区二区三区视频网页| 欧美日韩国产综合久久| 久久精品国产99久久6| 国产精品久久久久婷婷二区次| 欧美日韩一级二级| 国产九九视频一区二区三区| 亚洲黄一区二区三区| 日韩精品一区国产麻豆| 99久久精品99国产精品 | 国产一区亚洲一区| 亚洲色图.com| 欧美mv日韩mv| 一本大道久久a久久综合婷婷| 久久电影网站中文字幕| 日韩毛片精品高清免费| 日韩欧美一级在线播放| 99精品国产视频| 久久精品国产99久久6| 一区二区三区四区亚洲| www国产成人免费观看视频 深夜成人网| 91视频在线观看免费| 麻豆免费看一区二区三区| 亚洲欧美另类综合偷拍| 久久综合一区二区| 在线观看国产91| 成人蜜臀av电影| 蜜桃视频免费观看一区| 一区二区三区日韩精品视频| 久久久久久久久久看片| 91精品国产综合久久精品麻豆| 成人精品国产免费网站| 久久av中文字幕片| 亚洲精品菠萝久久久久久久| 国产日韩精品久久久| 日韩一区二区在线观看视频播放| 91麻豆视频网站|