python - 哪些索引数组值位于特定误差范围内?

标签 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 方法?

最佳答案

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

你可以做一些事情,比如采用脉冲响应方程,用 sympy 对它进行符号微分,然后应用牛顿法,但你必须在正确的位置开始它,这样它就不会落入局部方程之一最小值。总的来说,我认为你的位置很好。

关于python - 哪些索引数组值位于特定误差范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35842357/

相关文章:

python - 过滤二维 numpy 数组

python - 如何有效地将 scipy 稀疏数组和 numpy 数组分割成较小的 N 个不等 block ?

python - 在 GStreamer 1.0 中仍然可以使用独立的 Python 元素吗?

python - 在对每个数组进行更改时迭代数组列表

python - 带有 Flask 的 SQLAlchemy 无法连接到数据库以进行原始 SQL 查询?

python - 通过 python3 中连接的集群的多数投票进行标记

python - Python 中的约束优化求解器

python - 计算 Gamma(x+1/2)/Gamma(x)

python Mechanize 代理问题

python - psycopg2 - 如何在更新 Json 列时转义单引号?