向量和矩阵乘法(Vector and matrix multiplication)
优质
小牛编辑
152浏览
2023-12-01
下表描述了向量和矩阵乘法函数:
功能 | 描述 |
---|---|
dot_product(vector_a, vector_b) | 此函数返回两个输入向量的标量积,其长度必须相同。 |
matmul(matrix_a,matrix_b) | 它返回两个矩阵的矩阵乘积,它必须是一致的,即具有类似(m,k)和(k,n)的维数 |
Example
以下示例演示了dot产品:
program arrayDotProduct
real, dimension(5) :: a, b
integer:: i, asize, bsize
asize = size(a)
bsize = size(b)
do i = 1, asize
a(i) = i
end do
do i = 1, bsize
b(i) = i*2
end do
do i = 1, asize
Print *, a(i)
end do
do i = 1, bsize
Print *, b(i)
end do
Print*, 'Vector Multiplication: Dot Product:'
Print*, dot_product(a, b)
end program arrayDotProduct
编译并执行上述代码时,会产生以下结果:
1.00000000
2.00000000
3.00000000
4.00000000
5.00000000
2.00000000
4.00000000
6.00000000
8.00000000
10.0000000
Vector Multiplication: Dot Product:
110.000000
Example
以下示例演示了矩阵乘法:
program matMulProduct
integer, dimension(3,3) :: a, b, c
integer :: i, j
do i = 1, 3
do j = 1, 3
a(i, j) = i+j
end do
end do
print *, 'Matrix Multiplication: A Matrix'
do i = 1, 3
do j = 1, 3
print*, a(i, j)
end do
end do
do i = 1, 3
do j = 1, 3
b(i, j) = i*j
end do
end do
Print*, 'Matrix Multiplication: B Matrix'
do i = 1, 3
do j = 1, 3
print*, b(i, j)
end do
end do
c = matmul(a, b)
Print*, 'Matrix Multiplication: Result Matrix'
do i = 1, 3
do j = 1, 3
print*, c(i, j)
end do
end do
end program matMulProduct
编译并执行上述代码时,会产生以下结果:
Matrix Multiplication: A Matrix
2
3
4
3
4
5
4
5
6
Matrix Multiplication: B Matrix
1
2
3
2
4
6
3
6
9
Matrix Multiplication: Result Matrix
20
40
60
26
52
78
32
64
96