与Python的梯形集成

与Python的梯形集成,python,arrays,list,numpy,Python,Arrays,List,Numpy,我想做吊架整合。 这是我的密码: import numpy as n import matplotlib.pyplot as plt import math as m import loaddataa as ld import scipy.integrate as integrate dataListStride = ld.loadData("../Data/Fabienne") indexStrideData = 0 #Daten ohne Gyrometer strideData = d

我想做吊架整合。 这是我的密码:

import numpy as n
import matplotlib.pyplot as plt
import math as m
import loaddataa as ld
import scipy.integrate as integrate 

dataListStride = ld.loadData("../Data/Fabienne")
indexStrideData = 0 #Daten ohne Gyrometer
strideData = dataListStride[indexStrideData]

def horizontal(yAngle, yAcceleration, xAcceleration):
    a = (m.cos(yAngle)*yAcceleration)-(m.sin(yAngle)*xAcceleration)
    return a

resultsHorizontal = list()

for i in range (len(strideData)):
    strideData_yAngle = strideData.to_numpy()[i, 2]
    strideData_xAcceleration = strideData.to_numpy()[i, 4]
    strideData_yAcceleration = strideData.to_numpy()[i, 5]
    resultsHorizontal.append(horizontal(strideData_yAngle, strideData_yAcceleration, strideData_xAcceleration))

resultsHorizontal.insert(0, 0)

print("The values are: " +str(resultsHorizontal))

print("Es gibt " +str(len(resultsHorizontal)) + " Werte.")

scale_factor = 0.01
x_values = np.arange(len(resultsHorizontal)) * scale_factor
plt.plot(x_values, resultsHorizontal)
在这里,您可以看到当前输出以及我想要对输出进行的所需添加:

在图片上的红色框中,你可以看到我接下来要做什么。例如,有没有一种方法可以以循环的形式使这变得更容易

我试过:
integrate.cumtrapz(resultsvillancy,dx=0.01)
然后我又得到了一个包含150个值的列表,就像它应该的那样。不幸的是,只有第一个值是正确的,其余的则不正确。所以我必须用另一种方式


它应该是这样的:我想做梯形积分,从0到第一个值(列表resultsHorizontal中的计算值),然后从第一个值到第二个值,然后从第二个值到第三个值,依此类推,直到倒数第二个值到最后一个值。因此,最终我得到的值与列表resultsHorizontal中的值相同。

如果我理解正确,您希望计算阵列连续值之间的单个梯形区域(如果我错了,请更正我)。 为此,您可以手动计算(假设图像中的
dx
是常量,并且值存储在
arr
中)

该列表当然比列表
arr
短一个元素,因为
N个
点之间只有
N-1
间隔。如果您坚持要获取区域的
N
值,请进一步说明您将如何做到这一点(我认为存在歧义,尤其是在边界处)。 对于numpy,也可以将上述内容缩写为

trapz = (arr[:-1]+arr[1:])/2*dx
trapz = (arr[:-1]+arr[1:])/2*dx