R语言中%*%矩阵乘法运算符的工作原理解析请求
理解R语言中的
%*%矩阵乘法运算符 嗨,我来帮你把这个%*%的原理讲明白~它在R里就是标准的矩阵乘法运算符,完全遵循线性代数里矩阵相乘的规则,咱们结合你的例子一步步拆解:
首先先明确你创建的矩阵M2:
M2 <- matrix(c(1,2,3,4),nrow = 2,ncol = 2,byrow = TRUE)
打印出来的M2是这样的:
[,1] [,2] [1,] 1 2 [2,] 3 4
矩阵乘法的核心规则
当用%*%计算两个矩阵相乘时,结果矩阵中第i行第j列的元素,等于第一个矩阵的第i行和第二个矩阵的第j列对应元素相乘后求和。而且只有当第一个矩阵的列数等于第二个矩阵的行数时,才能进行这种运算(你的例子里两个都是2×2矩阵,刚好满足条件)。
针对你的例子一步步计算
咱们来手动算M2 %*% M2的每一个元素:
- 结果矩阵的
[1,1]位置:取M2的第一行(1, 2),乘以M2的第一列(1, 3),对应元素相乘再相加:1×1 + 2×3 = 1 + 6 = 7 - 结果矩阵的
[1,2]位置:取M2的第一行(1, 2),乘以M2的第二列(2, 4):1×2 + 2×4 = 2 + 8 = 10 - 结果矩阵的
[2,1]位置:取M2的第二行(3, 4),乘以M2的第一列(1, 3):3×1 + 4×3 = 3 + 12 = 15 - 结果矩阵的
[2,2]位置:取M2的第二行(3, 4),乘以M2的第二列(2, 4):3×2 + 4×4 = 6 + 16 = 22
这样算出来的结果就和你运行M2%*%M2得到的完全一致啦:
[,1] [,2] [1,] 7 10 [2,] 15 22
最后补充个小提醒:别把%*%和R里的*搞混哦!*是元素-wise乘法,也就是两个矩阵对应位置的元素直接相乘,和矩阵乘法完全不是一回事~
内容的提问来源于stack exchange,提问作者Wenjia Zhai
相关产品推荐
相关产品推荐

