【问题标题】:Matrix dot-product in RR中的矩阵点积
【发布时间】:2017-09-14 02:39:42
【问题描述】:

我想弄清楚如何进行点积。

b = matrix(1:70, ncol=7)
g= matrix(1:48, ncol=6)
resulta = matrix(0,6,7)
for (c in 1:ncol(b)){
  for (i in 1:ncol(g)){
    resulta[i,c] <- sum((g[,i]) * (b[,c]))
  }
}

警告信息:

1: In (g[, i]) * (b[, c]) :
  longer object length is not a multiple of shorter object length
2: In (g[, i]) * (b[, c]) :
  longer object length is not a multiple of shorter object length

.......................总共 42 条类似消息

【问题讨论】:

  • 先生,您正在尝试将不同维度的度量相乘10x78x6。每个循环中有 10 元素向量乘以 8 元素向量。此外,要正确执行此操作,应该使用矩阵乘法运算符而不是循环%*%。希望这会有所帮助my.ilstu.edu/~wjschne/442/MatrixAlgebraInR.html#(1)

标签: r dot-product


【解决方案1】:

当你将矩阵相乘时,你必须确保第一个矩阵的#columns 与第二个矩阵的#rows 相同,即如果第一个矩阵是a x b,第二个矩阵必须是b x c(c 和a 可能相等也可能不相等),因此结果矩阵为a x c

在您的情况下,矩阵 b 是 70 x 7 意味着矩阵 g 应该是 7 x something 矩阵。换句话说,矩阵 g 应该正好有 7 行。

一旦你确定了维度,试试这个快速矩阵乘法:
resulta &lt;- b %*% g
resulta

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多