与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