是否有任何内置的 numpy
函数来检查信号(数组)从哪个索引开始没有留下特定的误差带?
使用数字滤波器,我需要确定要在 scipy.signal.filtfilt
中使用的脉冲响应的长度.使用有限脉冲响应 (FIR) 滤波器相当容易,但使用无限脉冲响应 (IIR) 滤波器则有点不可能。
但是,它会计算脉冲响应不会离开某个误差带的点:
现在我正在使用一种快速而肮脏的解决方法,手动检查反向数组以查找错误带外的第一个值:
def ringing_time(sig, th):
return len(sig) - np.argmax(np.abs(sig[::-1]) > th)
是否有任何快速内置的 numpy
方法?
最佳答案
一般来说,不会。您正在利用一些并非普遍适用的特定于信号的知识(包络随时间衰减的事实)。如果您想以数字方式进行,我认为您的解决方案是一个很好的解决方案。
你可以做一些事情,比如采用脉冲响应方程,用 sympy 对它进行符号微分,然后应用牛顿法,但你必须在正确的位置开始它,这样它就不会落入局部方程之一最小值。总的来说,我认为你的位置很好。
关于python - 哪些索引数组值位于特定误差范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35842357/