使用SciPy的执行样本的离散整合(Using scipy to perform discrete

2019-06-24 23:46发布

我试图端口LabVIEW与蟒蛇。

LabVIEW中存在,将一组样品的作为输入的函数“积分X(t)的VI”,执行样本的离散积分并返回根据辛普森规则值的列表(曲线下的区域)。

我试图找到在SciPy的,如scipy.integrate.simps同等的功能,但这些功能返回总结整体跨越,样本集,为float。

我如何获得的累计值的列表,而不是其累计值的总和?

我只是看问题的周围走错了路?

Answer 1:

我想你可能使用scipy.integrate.simps稍微不正确。 返回的面积scipy.integrate.simps是下的总面积y (通过第一个参数)。 第二个参数是可选的,并且对于x轴(针对每个y值的实际x值)的采样值。 即:

>>> import numpy as np
>>> import scipy
>>> a=np.array([1,1,1,1,1])
>>> scipy.integrate.simps(a)
4.0
>>> scipy.integrate.simps(a,np.array([0,10,20,30,40]))
40.0

我想你想不同的限制之间的相同曲线下返回领域? 要做到这一点,你通过你想,这样的曲线部分:

>>> a=np.array([0,1,1,1,1,10,10,10,10,0])
>>> scipy.integrate.simps(a)
44.916666666666671
>>> scipy.integrate.simps(a[:5])
3.6666666666666665
>>> scipy.integrate.simps(a[5:])
36.666666666666664


Answer 2:

只有一个在SciPy的方法,做一体化累计是scipy.integrate.cumtrapz()这是你想要的,只要你不特别需要使用辛普森的规则或另一种方法是什么。 对于这一点,你可以按照建议总是写上自己的循环。



文章来源: Using scipy to perform discrete integration of the sample