You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中进行矩阵乘法?含3×1与3×3矩阵相乘场景

嘿,我来帮你理清R语言里的矩阵乘法操作!下面针对你的两个问题逐一说明:

1. 如何在R语言中实现两个矩阵的乘法运算?

咱们首先得明确矩阵乘法的核心前提:第一个矩阵的列数必须等于第二个矩阵的行数,否则运算会直接报错。在R里,最常用的有两种方式实现矩阵乘法:

  • 用原生运算符 %*%:这是R内置的矩阵乘法专用运算符,不用额外装包,直接就能用,是日常最推荐的方式。
  • 用matrixcalc包的matrix.multiply()函数:如果偏好更明确的函数调用形式,可以安装这个专门做矩阵计算的包来实现。

举个简单例子,假设我们有一个2×3的矩阵A和一个3×2的矩阵B:

# 创建2行3列的矩阵A
A <- matrix(c(1,2,3,4,5,6), nrow = 2, ncol = 3)
# 创建3行2列的矩阵B
B <- matrix(c(7,8,9,10,11,12), nrow = 3, ncol = 2)

# 方法1:用%*%运算符完成矩阵乘法
result1 <- A %*% B

# 方法2:用matrixcalc包的函数(需先安装包)
install.packages("matrixcalc")
library(matrixcalc)
result2 <- matrix.multiply(A, B)

两种方法得到的结果完全一致,最终会输出一个2×2的矩阵。

2. 现有一个3×1矩阵和一个3×3矩阵,请问如何在R语言中完成二者的乘法?

这里要特别注意矩阵的相乘顺序!因为矩阵乘法不满足交换律,咱们得先判断哪种顺序符合运算规则:

  • 把3×3矩阵(记为M)放在前面,3×1矩阵(记为V)放在后面:M的列数是3,V的行数是3,刚好满足乘法前提,运算后会得到一个3×1的矩阵。
  • 如果反过来把3×1矩阵放在前面,3×3矩阵放后面:V的列数是1,M的行数是3,1≠3,这种情况R会直接抛出维度不匹配的错误。

咱们用代码实际演示一下:

# 创建3×3的矩阵M
M <- matrix(c(1,2,3,4,5,6,7,8,9), nrow = 3, ncol = 3)
# 创建3×1的矩阵V
V <- matrix(c(10,20,30), nrow = 3, ncol = 1)

# 正确的乘法顺序:3×3矩阵 × 3×1矩阵
correct_result <- M %*% V
print(correct_result)
# 输出是一个3×1的矩阵:
#      [,1]
# [1,] 140
# [2,] 320
# [3,] 500

# 错误的顺序:3×1矩阵 × 3×3矩阵(执行会报错)
# wrong_result <- V %*% M
# 错误提示:Error in V %*% M : non-conformable arguments

如果你的需求是让这两个矩阵完成乘法,一定要把3×3的矩阵放在前面哦!

内容的提问来源于stack exchange,提问作者Krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:32:42