For循环的矩阵乘法函数

时间:2017-10-07 03:42:31

标签: r matrix matrix-multiplication

我正在努力做这个看似简单的功能。我无法弄清楚为什么这不起作用。

我的代码:

C = matrix(0 , dim(matrixA)[1] , dim(matrixB)[2] , TRUE ) 
mat_mult = function(matrixA, matrixB){
for ( ii in 1:dim(matrixA)[1] ) {
   for ( jj in 1:dim(matrixB)[2] ) {
      for (kk in 1:dim(matrixA)[2] ) {
         C[ii,jj] = C[ii,jj] + matrixA[ii,kk]*matrixB[kk,jj]
      }
   }
 }


}

我只想将两个矩阵相乘。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您没有声明矩阵c:

mat_mult = function(matrixA, matrixB){
c = matrix(0 , dim(matrixA)[1] , dim(matrixB)[2] , TRUE ) #This line
for ( ii in 1:dim(matrixA)[1] ) {
  for ( jj in 1:dim(matrixB)[2] ) {
    for (kk in 1:dim(matrixA)[2] ) {
      c[ii,jj] = c[ii,jj] + matrixA[ii,kk]*matrixB[kk,jj]
    }
  }
}
return (c)
}

希望它有所帮助。

答案 1 :(得分:1)

你的错误:

  1. 你不应该在R中调用任何“c”,因为“c”是非常重要的函数的名称。
  2. 您忘记初始化矩阵“c”
  3. 您没有返回矩阵“c”
  4. 另外,你最好修复可怕的缩进和不一致的间距,而不是dim(x)[1]和dim(x)[2]更好地使用nrow(x)和ncol(x)