FlyByWire/test_biquad.py
2021-07-04 17:41:36 +02:00

44 lines
997 B
Python

# test of biquad filter
import numpy as np
from BiquadFilter import BiquadFilter
import matplotlib.pyplot as plt
omega = 10
q = 2
dt = 0.01
tflow = BiquadFilter(omega, q, dt, "lowpass")
tfhigh = BiquadFilter(omega, q, dt, "highpass")
tfband = BiquadFilter(omega, q, dt, "bandpass")
tfnotch = BiquadFilter(omega, q, dt, "notch")
tflow.PrintContinuousTF(); print('')
tfhigh.PrintContinuousTF(); print('')
tfband.PrintContinuousTF(); print('')
tfnotch.PrintContinuousTF(); print('')
# simulate filter response
tend = 10
Npts = int(np.ceil(tend/dt))
Yl = np.zeros(Npts)
Yh = np.zeros(Npts)
Yband = np.zeros(Npts)
Ynotch = np.zeros(Npts)
T = np.zeros(Npts)
for i in range(Npts):
t = i*dt
if t >= 1:
x = 1
else:
x = 0
T[i] = t
Yl[i] = tflow.Filter(x)
Yh[i] = tfhigh.Filter(x)
Yband[i] = tfband.Filter(x)
Ynotch[i] = tfnotch.Filter(x)
plt.plot(T, Yl, T, Yh, T, Yband, T, Ynotch)
plt.grid(True)
plt.show()