矩阵乘以矢量在R中的应用
矩阵是一个二维的结构,而向量是一个一维的结构。在这篇文章中,我们将使用R编程语言将给定的矩阵与给定的向量相乘。当向量元素与矩阵元素逐列相乘时,二者之间会发生相乘。
方法
- 创建一个矩阵
- 创建一个向量
- 将它们相乘
- 显示结果。
方法1:天真烂漫的方法
一旦结构准备好了,我们直接用乘法运算符(*)将它们相乘。
例子
# create a vector for matrix elements
vector1=c(1,2,3,4,5,6,7,8,9,10,11,12)
# Create A matrix with 2 rows and 6 columns
matrix1 <- matrix(vector1, nrow=2,ncol=6)
# multiplication vector
mul_vec=c(1,2,3,4)
# print multiplication result
print(matrix1*mul_vec)
输出
例2 :
# create a vector for matrix elements
vector1=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
# Create A matrix with 4 rows and 4 columns
matrix1 <- matrix(vector1, nrow=4,ncol=4)
print(matrix1)
mul_vec=c(1,2,3,4)
print("Result")
print(matrix1*mul_vec)
输出
例3 :
这段代码中的矩阵和向量都有相同的大小
# create a vector for matrix elements
vector1=c(1,2,3,4)
# Create A matrix with 2 rows and 2 columns
matrix1 <- matrix(vector1,nrow=2,ncol=2)
print(matrix1)
mul_vec=c(1,2,3,4)
print("Result")
print(matrix1*mul_vec)
输出
方法2:使用sweep( )方法
我们可以使用sweep()方法将向量与矩阵相乘。sweep()函数用于将 “+或-或’*’或’/'”操作应用于给定矩阵中的行或列。
语法
sweep(data, MARGIN, FUN)
参数
- data=输入矩阵
- MARGIN:MARGIN=2表示行;MARGIN=1表示列。
- FUN:要进行的操作(例如:+或-或*或/)。
这里,我们要进行 “*”操作
例子
# create matrix with 15 elements
matrix1 <- matrix(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15),
nrow=3,byrow=TRUE)
print(matrix1)
print("---------------")
# create a vector
vector1 <- c(1,2,3,4,5)
# apply sweep operation that multiplies row
# wise(margin=2)
print(sweep(matrix1, MARGIN=2,vector1, `*`))
print("---------------")
# create elements with vector 2
vector2 <- c(1,2,3)
# apply sweep operation that multiplies column
# wise with vector 2(margin=1)
print(sweep(matrix1, MARGIN=1,vector2, `*`))
输出
例2 :
# create matrix with 8 elements
matrix1 <- matrix(c(1,2,3,4,5,6,7,8),
nrow=2,byrow=TRUE)
print(matrix1)
print("---------------")
# create a vector
vector1 <- c(1,2,3,4)
# apply sweep operation that multiplies
# row wise(margin=2)
print(sweep(matrix1, MARGIN=2,vector1, `*`))
print("---------------")
# create elements with vector 2
vector2 <- c(1,2)
# apply sweep operation that multiplies column
# wise with vector 2(margin=1)
print(sweep(matrix1, MARGIN=1,vector2, `*`))
输出