⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 convlv.txt

📁 《Delphi常用数值算法集》的配书源码
💻 TXT
字号:
Procedure CONVLV(DATA:array of real; N:integer; RESPNS:array of real;
                        M:integer; ISIGN:integer;var ANS:array of real);
var
    FFT:array[0..32] of real;
    I,NO2:integer;   DUM1,DUM,DUM2,ANS1:real;
begin
    For I:=1 To ((M - 1) div 2) do
        RESPNS[N + 1 - I]:=RESPNS[M + 1 - I];
    For I:= (M + 3) div 2 To N - (M - 1) div 2 do
        RESPNS[I]:=0;
    TWOFFT(DATA, RESPNS, FFT, ANS, N);
    NO2:= N div 2;
    For I:=1 To NO2 + 1 do
    begin
        If ISIGN = 1 Then
        begin
          DUM:=ANS[2 * I - 1];
          DUM1:=FFT[2 * I - 1] * DUM - FFT[2 * I] * ANS[2 * I];
          ANS[2 * I - 1]:=DUM1 / NO2;
          DUM2:=FFT[2 * I - 1] * ANS[2 * I] + FFT[2 * I] * DUM;
          ANS[2 * I]:=DUM2 / NO2;
        end
        else if ISIGN = -1 Then
        begin
          If (DUM = 0) And (ANS[2 * I] = 0) Then
          begin
            ShowMessage('deconvolving at a response zero');
            Exit;
          End; 
          ANS1:=FFT[2 * I - 1] * DUM + FFT[2 * I] * ANS[2 * I];
          DUM1:=DUM * DUM + ANS[2 * I] * ANS[2 * I];
          ANS[2 * I - 1]:=ANS1 / DUM1 / NO2;
          ANS1:=FFT[2 * I] * DUM - FFT[2 * I - 1] * ANS[2 * I];
          DUM2:=DUM * DUM + ANS[2 * I] * ANS[2 * I];
          ANS[2 * I]:=ANS1 / DUM2 / NO2;
        end
        else
          Showmessage(' no meaning for ISIGN');
    end;
    ANS[2]:=ANS[2 * NO2 + 1];
    REALFT(ANS, NO2, -1);
end; 

⌨️ 快捷键说明

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