【问题标题】:Why does python's scipy.signal.dimpulse introduce delay in impulse response?为什么 python 的 scipy.signal.dimpulse 会在脉冲响应中引入延迟?
【发布时间】:2017-09-13 11:22:38
【问题描述】:

考虑一个简单的线性时不变系统,形式如下:

y_k = c*y_k-1 + (1-c)x_k

这个系统的脉冲响应可以通过 dimpulse 或通过将 lfilter 应用于由一个后跟零组成的向量来计算:

import scipy.signal as sp_signal
import numpy as np

Ts = 1
c = 0.9
A = [1, -c]
B = [1-c]

time, imp_resp1 = sp_signal.dimpulse((B, A, Ts))

x = np.zeros(100)
x[0] = 1
imp_resp2 = sp_signal.lfilter(B, A, x)

print(imp_resp1[0][:5,0])
print(imp_resp2[:5])

产生:

array([ 0.    ,  0.1   ,  0.09  ,  0.081 ,  0.0729])

[ 0.1      0.09     0.081    0.0729   0.06561]

为什么dimpulse会在脉冲响应中引入单样本延迟?

【问题讨论】:

    标签: scipy filtering signal-processing


    【解决方案1】:

    请注意,如果您在分子中添加零,即 [1-c, 0] dimpulse 将给出与 lfilter 相同的结果。添加这个零根本不应该做任何事情,所以我怀疑是某种错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多