【问题标题】:Scipy simpson integration to get array of valuesScipy 辛普森集成以获取值数组
【发布时间】:2021-07-03 08:50:49
【问题描述】:
import numpy as np
from scipy.integrate import simpson

我正在尝试整合下面给出的加速度信号:

f2 = lambda t: 0.1*np.sin(np.pi*t) + 0.1*np.sin(20*np.pi*t) + 0.01

时间点:

t = np.arange(0, 20, 0.1)

我正在尝试使用 scipy 中的 simps/simpson 包将 f2 集成到 t 上,但出现此错误:

v2 = simpson(f2, t)
IndexError: tuple index out of range

如果我使用如下列表理解创建加速数据点列表:

a2 = [f2(i) for i in t]

并使用辛普森法则整合上面的列表,我只得到一个值:

v2 = simps(a2, t)

这是

v2 = 0.2005702922522627

我想在 t 周期内使用 Simpson 积分获得一个速度值列表或数组,并将其与 t 进行对比,但我尝试的一种方法是给我一个错误,而另一种方法是给一个奇异值。

【问题讨论】:

    标签: python python-3.x scipy simpsons-rule


    【解决方案1】:

    问:您为什么要为此使用分析方法/库?在这种情况下

    v = v0 + Sigma(da * dt) * 常数。

    常数取决于产生信号的加速度传感器。如果该传感器线性工作,那么您可以对您的 lambda change (da) 进行采样,直到 t 具有足够小的步长 (dt),然后将结果乘以步长并累积结果。每个样本都将获得一个您可以绘制的 v 值。要找到 v 的值,请确保添加 v0(起始速度)

    【讨论】:

    • 是的,你是对的。我试图从一篇研究论文中实现一种减少加速度漂移的方法,他们使用了辛普森积分,这就是为什么
    • 有时在循环中写出东西更容易。尤其是当您有样品时。但本质上,如果您的步长 dt 足够小,辛普森也会做同样的事情。我不是 Python 方面的专家,所以我不能给你代码,但我认为你可以用 20 行代码的 for 循环来解决这个问题。
    猜你喜欢
    • 2013-08-15
    • 2019-06-08
    • 2016-05-05
    • 2016-07-19
    • 2019-04-22
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多