gpt4 book ai didi

R:将笛卡尔坐标转换为极坐标,然后计算距原点的距离

转载 作者:行者123 更新时间:2023-12-04 14:02:26 24 4
gpt4 key购买 nike

我一直在寻找将笛卡尔坐标(纬度,经度)转换为极坐标的解决方案,以促进我想要运行的模拟,但我在这里没有找到任何问题或答案R. 有很多选项,包括 Matlab 中的内置函数 car2pol,但我所有的数据都在 R 中,我想继续在这个框架中工作。

题:

我有来自标记数据的纬度/经度坐标,我想将它们转换为极坐标(意思是跳跃大小和角度:http://en.wikipedia.org/wiki/Polar_coordinate_system),这样我就可以洗牌或引导它们(尚未决定哪个)大约 1,000 次,并计算每条模拟轨迹距起点的直线距离。我有一个真实的轨迹,我有兴趣通过模拟 1,000 条具有相同跳跃大小和转弯角度但顺序和组合完全不同的随机轨迹来确定这种动物是否表现出 field 亲和力。所以我需要与原点相距 1,000 条直线距离来创建距离分布,然后将其与我的真实数据集的直线距离进行比较。

我很乐意进行引导,但我坚持第一步,即将我的笛卡尔纬度/经度坐标转换为极坐标(跳跃大小和转弯角度)。我知道在其他程序(例如 Matlab)中有内置函数可以执行此操作,但是我找不到在 R 中执行此操作的任何方法。我可以在 for 循环中手动执行此操作,但是如果有一个包有或任何更简单的方法来做到这一点,我更喜欢那个。

理想情况下,我想将数据转换为极坐标,运行模拟,然后为每个随机轨迹输出一个端点作为笛卡尔坐标,纬度/经度,这样我就可以计算直线距离。

我没有发布任何示例数据,因为它只是一个经纬度坐标的两列数据框。

感谢您的任何帮助,您可以提供!如果本网站或其他网站上的某处有一个简单的解释,我错过了,请指出那个方向!我找不到任何东西。

干杯

最佳答案

对于相同单位的 x-y 坐标(例如米而不是纬度和经度),您可以使用此函数获取跳跃大小和转弯角度(以度为单位)的 data.frame。

getSteps <- function(x,y) {
d <- diff(complex(real = x, imaginary = y))
data.frame(size = Mod(d),
angle = c(NA, diff(Arg(d)) %% (2*pi)) * 360/(2*pi))
}

## Try it out
set.seed(1)
x <- rnorm(10)
y <- rnorm(10)
getSteps(x, y)
# size angle
# 1 1.3838360 NA
# 2 1.4356900 278.93771
# 3 2.9066189 101.98625
# 4 3.5714584 144.00231
# 5 1.6404354 114.73369
# 6 1.3082132 135.76778
# 7 0.9922699 74.09479
# 8 0.2036045 141.67541
# 9 0.9100189 337.43632

## A plot helps check that this works
plot(x, y, type = "n", asp = 1)
text(x, y, labels = 1:10)

enter image description here

关于R:将笛卡尔坐标转换为极坐标,然后计算距原点的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16351178/

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