📄 convlv.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 + -