Как генерировать случайные стабильные коэффициенты БИХ-фильтра с помощью scipy? - PullRequest
0 голосов
/ 29 апреля 2020

Я ищу простой способ генерирования случайного набора стабильных коэффициентов БИХ-фильтра. Случайные числа (используя 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, который я мог бы сделать поверх коэффициентов знаменателя, чтобы сделать фильтр устойчивым? Я действительно хочу избежать определения радиуса / фазы для каждой пары полюсов для генерации фильтров.

...