私はPythonには新しく、いくつかの基本的な信号処理をしようとしていますが、パフォーマンス上の問題が深刻です。ベクトル化された方法でこれを行うためのpythonのトリックはありますか?基本的には1次フィルタを実装しようとしていますが、フィルタの特性が1つのサンプルから次のサンプルに変わることがあります。それが1つのフィルタであれば、numpy.signal.lfilter()を使用しますが、それはやや難解です。numpy配列の高速反復
#filter state
state = 0
#perform filtering
for sample in amplitude:
if(sample == 1.0): #attack filter
sample = (1.0 - att_coeff) * sample + att_coeff * state
else: #release filter
sample = (1.0 - rel_coeff) * sample + rel_coeff * state
state = sample