矩阵乘法 - 不一致矩阵的松散定义

时间:2013-01-04 14:16:34

标签: r matrix

假设我们有以下内容:

x <- matrix(1:9, nrow=3)
y <- c(1,2,3)
x%*%y
y%*%x

为什么矩阵乘法不是未定义的?我们知道x是3 x 3矩阵,y是1 x 3矩阵。因此,不应定义x %*% yy %*% x应为1 x 3矩阵。

1 个答案:

答案 0 :(得分:7)

幸运的是(或者不幸的是,取决于具体情况)许多R运算符(处于默认状态)都会超负荷并在“引擎盖”下执行各种操作 - 在此示例中,%*%的默认功能R会自动将y强制转换为其维度有效的矩阵。当您键入

x %*% y 

它使y为3 x 1矩阵,当您键入

y %*% x 

它使y为1 x 3矩阵。

尝试与您键入的内容进行比较

x %*% as.matrix(y) 

t(as.matrix(y)) %*% x
分别