r - 在 R 中手动将两个矩阵相乘
问题描述
我正在使用R v 3.0.0 (2013-04-03)
并RStudio v 1.1.463
在 Win-7 64 位下使用。
在以下源代码中:
# Problem 1 - Matrix powers in R
#
# R does not have a built-in command for taking matrix powers.
# Write a function matrixpower with two arguments mat and k that
# will take integer powers k of a matrix mat.
matrixMul <- function(mat1)
{
rows <- nrow(mat1)
cols <- ncol(mat1)
matOut = matrix(nrow = rows, ncol = cols) # empty matrix
for (i in 1:rows)
{
for(j in 1:cols)
{
vec1 <- mat1[i,]
vec2 <- mat1[,j]
mult1 <- vec1 * vec2
matOut[i,j] <- mult1
}
}
return(matOut)
}
mat1 <- matrix(c(1,2,3,4), nrow = 2, ncol=2)
power1 <- matrixMul(mat1)
根据矩阵乘法规则,期望的输出是:
7 10
15 22
但是,我得到以下输出:
3 12
6 16
我在这里做错了什么?
这是做乘法的有效方法吗?
解决方案
在您的代码中,您忘记对您的产品求和。它应该是
mult1 <- sum(vec1 * vec2)
也许在您的版本中,R
它只是分配向量的第一个元素。
推荐阅读
- c# - 每次点击创建新的图表区域
- c# - 将 CSV 标头与地图类进行比较
- react-native - useEffect() 不适用于大型组件
- javascript - 是否可以使用javascript将本地文件保存到同一台计算机的不同位置?
- java - 在 IDE 中使用 Apache poi 导出到 excel 是可行的,但是当我创建可运行的 jar 时它不会
- replace - 用 clean 或 replace(" ", "") 替换未删除的文本中的空格
- tensorflow - tf.keras model.predict 每次提供不同的值
- java - 用maven构建Spring Boot镜像找不到webapp资源
- mysql - 在 MySQL 8 版本中使用 replace 和 concat
- c# - C#/WPF 如何从 ViewModel 制作关闭应用程序按钮