比较两个向量时,计算它们之间的角度很简单,但在 R 中,要高效地计算一个向量和一个向量矩阵之间的角度就比较困难。
假设你有一个二维向量 A=(2, 0),然后有一个矩阵 B={(1,3), (-2,4), (-3,-3), (1,-4)}。我想知道 A 和 B 中向量之间最小的角度。 如果我尝试使用
min(acos( sum(a%*%b) / ( sqrt(sum(a %*% a)) * sqrt(sum(b %*% b)) ) ))
由于参数不兼容,因此它失败了。
是否有类似上面的代码可以处理向量和矩阵?
注意:冒着被标记为重复的风险,在几个源中找到的解决方案在这种情况下不适用。
编辑:原因是我有一个大矩阵X
,而A
只是其中的一行。我仅基于每个向量的角度来减少元素的数量。 B
的第一个元素是X
中的第一个元素,然后如果B
中的任何元素与下一个元素X [,2]
(这里是A
)之间的角度大于某个容差,则将其添加到列表B
中。我只是使用B<-rbind(B,X[,2])
来做到这一点,因此结果是B
成为矩阵。
B
是指列表还是矩阵?我想是列表。 - markusB=list(c(1,3), c(-2,4), c(-3,-3), c(1,-4))
? - markusB
,这回答了这个问题。 - Beavis