gpt4 book ai didi

python - 查找从 (x,y) 坐标移动的距离

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:19 25 4
gpt4 key购买 nike

我目前有一个 python 脚本,它读取一个 3 列文本文件,其中包含步行者的 x 和 y 坐标以及他们步行的时间。

我读入了这些数据并将其分配到 numpy 数组中,如下面的代码所示:

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt("info.txt", delimiter = ',')

x = data[:,0]
y = data[:,1]
t = data[:,2]

文件格式为 (x,y,t):

5907364.2371    -447070.881709  2193094
5907338.306978 -447058.019176 2193116
5907317.260891 -447042.192668 2193130

我现在想找出步行者行走的距离与时间的函数关系。我能想到的一种方法是在一个循环中对 x 坐标的差异和 y 坐标的所有差异求和。然而,这似乎是一个非常冗长的方法,我认为它可以通过一种数值积分来解决。有人知道我能做什么吗?

最佳答案

要计算“沿途”的距离,必须先获取每一步的距离。

这可以通过索引 dx = x[1:]-x[:-1] 以组件方式获得。每步的距离是“dx**2+dy**2 的平方根”请注意,该数组的长度减一,因为相对于步数的间隔少了一个。这可以通过将距离“0”分配给第一时间数据来完成。这就是下面“concatenate”行的作用。

这里没有数值积分,而是累加和。要执行数值积分,您需要运动方程(例如)。

额外的变化:我使用 np.loadtxtunpack=True 参数来节省几行。

import numpy as np
import matplotlib.pyplot as plt

x, y, t = np.loadtxt("info.txt", unpack=True)

dx = x[1:]-x[:-1]
dy = y[1:]-y[:-1]

step_size = np.sqrt(dx**2+dy**2)

cumulative_distance = np.concatenate(([0], np.cumsum(step_size)))

plt.plot(t, cumulative_distance)

plt.show()

关于python - 查找从 (x,y) 坐标移动的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46958127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com