python - Trapeze 与 Python 的集成
问题描述
我想做空中飞人整合。这是我的代码:
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(resultsHorizontal, dx=0.01)
然后我再次得到一个包含 150 个值的列表,就像它应该的那样。不幸的是,只有第一个值是正确的,其余的不是。所以我必须以另一种方式来做。
应该是这样的:我想做从0到第一个值(列表resultsHorizontal中的计算值。你可以在图中看到),然后从第一个值到第二个,然后从第二到第三,依此类推,直到倒数第二个值。所以最后我的值与列表 resultsHorizontal 中的值相同。
解决方案
如果我理解正确,您想计算数组连续值之间的单个梯形区域(如果我错了,请纠正我)。为此,您可以手动计算(假设图像dx
是恒定的并且值存储在arr
)
trapz = [(arr[i]+arr[i+1])/2*dx for i in range(len(arr)-1)]
这个列表当然会比列表短一个元素,arr
因为点之间只有N-1
间隔N
。如果您坚持获取N
这些区域的值,请进一步说明您将如何做到这一点(我认为存在歧义,特别是在边界处)。使用 numpy one 也可以将上述缩写为
trapz = (arr[:-1]+arr[1:])/2*dx
推荐阅读
- sql - 按指定返回所有捐赠者的最高 SUM 值
- python - 填充两行之间的区域(当一个在另一行下方时)
- javascript - 为 React 组件重构 jQuery
- php - PHP curl - 发送证书的正确方法?
- javascript - 未捕获的 ReferenceError:投票未在 HTMLInputElement.onclick Laravel 5.4 中定义
- python-2.7 - GDAL gdalbuildvrt 抛出错误:- CalledProcessError:命令返回非零退出状态 1
- django - 在 django admin 中使用完整的日历;将外部拖动的项目保存到模型
- assembly - 编写 ASCII 字符串的汇编指令
- maven-3 - Maven中资源目录的顺序
- java - JButton 动作不在 JTable 内部执行