📄 convlv.txt
字号:
Sub CONVLV(DATA(), N, RESPNS(), M, ISIGN, ANS())
Dim FFT(32)
For I = 1 To CInt(M - 1) / 2
RESPNS(N + 1 - I) = RESPNS(M + 1 - I)
Next I
For I = CInt(M + 3) / 2 To N - CInt(M - 1) / 2
RESPNS(I) = 0#
Next I
Call TWOFFT(DATA(), RESPNS(), FFT(), ANS(), N)
NO2 = CInt(N / 2)
For I = 1 To NO2 + 1
If ISIGN = 1 Then
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
ElseIf ISIGN = -1 Then
If DUM = 0# And ANS(2 * I) = 0 Then
Print "deconvolving at a response zero"
Exit Sub
End If
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
Else
Print " no meaning for ISIGN"
End If
Next I
ANS(2) = ANS(2 * NO2 + 1)
Call REALFT(ANS(), NO2, -1)
Erase FFT
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -