Я ищу простой способ генерирования случайного набора стабильных коэффициентов БИХ-фильтра. Случайные числа (используя randn и др.) Приводят к нестабильной работе фильтров в большинстве случаев. Например:
import numpy as np
from scipy import signal
from matplotlib import pyplot as plt
# generation
coefs = np.random.randn(8) # not stable some times
coefs[0] = 1.0
coefs = magic_transformation(coefs) # makes the filter stable
indata = np.random.randn(1024)
# filtering
outdata = signal.lfilter([1], coefs, indata)
# plotting
fig = plt.figure()
ax = fig.add_subplot()
ax.plot(indata)
ax.plot(outdata)
plt.show()
Есть ли какой-нибудь простой трюк magic_transformation
, который я мог бы сделать поверх коэффициентов знаменателя, чтобы сделать фильтр устойчивым? Я действительно хочу избежать определения радиуса / фазы для каждой пары полюсов для генерации фильтров.