索引数组值在特定错误带内?

时间:2016-03-07 11:19:52

标签: python numpy scipy signal-processing

是否有内置numpy函数来检查信号(数组)从哪个索引不会留下特定的错误带?

使用数字滤波器,我需要确定在scipy.signal.filtfilt中使用的脉冲响应的长度。使用有限脉冲响应(FIR)滤波器非常容易,但使用无限脉冲响应(IIR)滤波器是不可能的。
但是,它会计算出脉冲响应不会留下某个误差带的点:

impulse response of a Chebyshev-2 IIR filter

现在我使用快速而肮脏的解决方法,手动检查反向数组以获取错误范围之外的第一个值:

def ringing_time(sig, th):
    return len(sig) - np.argmax(np.abs(sig[::-1]) > th)

是否有快速内置的numpy方法?

1 个答案:

答案 0 :(得分:0)

一般来说,没有。您正在利用一些不普遍适用的信号特定知识(信封随时间衰减)。如果您想以数字方式进行,我认为您的解决方案是一个很好的解决方案。

你可以做一些喜欢采用冲动响应方程式,用符号象征性地区分它并应用牛顿方法,但你必须处理它在正确的位置开始它所以它不属于一个本地极小。总的来说,我认为你处在一个好位置。