【发布时间】:2013-03-01 16:50:30
【问题描述】:
我觉得这个问题很愚蠢,但是 R 的 crossprod 函数对于向量输入的意图是什么?我想计算欧几里得空间中两个向量的叉积并错误地尝试使用crossprod。
向量叉积的一种定义是N = |A|*|B|*sin(theta),其中 theta 是两个向量之间的角度。 (N 的方向垂直于 A-B 平面)。另一种计算方法是N = Ax*By - Ay*Bx。base::crossprod 显然不做这个计算,实际上产生了两个输入sum(Ax*Bx, Ay*By) 的向量点积。
所以,我可以轻松编写自己的vectorxprod(A,B) 函数,但我无法弄清楚crossprod 通常在做什么。
【问题讨论】:
-
查看
crossprod文档-Vectors are promoted to single-column or single-row matrices, depending on the context.。 -
@DavidRobinson 我确实读过,所以我想我的问题变成了:矩阵叉积的正确定义是什么?为什么它不像欧几里得向量叉积?
-
@CarlWitthoft 感谢您发布此内容,我有同样的问题,这让我发疯了。如果您写了
vectorxprod(A, B),您愿意分享(我猜是答案)?谢谢。 -
@BryanHanson 好的,看看新的答案。
-
有点晚了,但是使用术语“叉积”来指代 X'X 矩阵在统计学中相当普遍(毕竟,这就是 R 的来源)。这是回归应用程序中的标准结构。谷歌搜索“平方和和叉积”可能会有所帮助。
标签: r