关于fortran矩阵运算的

现在就是有一个(6,60)(这应该是6列60行)的矩阵,然后一个一维行向量也是六个元素,让他两每一行对应元素相乘,我看了MATLAB里直接用.*乘就可以,不知道fortran里是不是也这样。同理一个(60,6)的矩阵和一个列向量,每一列对应相乘该怎么写程序呢


program Test
implicit none
integer i
!虽然fortran数组存储是列优先
!但矩阵a是符合数学定义上的,2行3列
!    1 3 5
!    2 4 6
integer:: a(2,3) =reshape([1,2,3,4,5,6],[2,3]), d(2,3)
!一维数组既可以表示行向量,也可表示列向量
!具体看你怎么用, 以下是矩阵乘法的例子
integer:: b1(2)=1,b2(3)=1
integer c1(3),c2(2)
! b1行向量,c1列向量
c1 = matmul(b1,a)
!结果 3,7,11
print*,c1
! b2列向量,c2行向量
c2 = matmul(a,b2)
!结果 9,12
print*,c2

! matlab中 .* 是对应元素相乘
! fortran中用 *
! 以下是示例
do i=1, 3
  d(:,i) = a(:,i) * b1(:)
end do
do i=1, 2
  d(i,:) = a(i,:) * b2(:)
end do
end program

比如矩阵A是3x3,响亮B是3其实可以理解成3x1,fortran里直接用matmul(A,B)即可
其实跟Matlab里类似,都要求一个是mxn,另一个是nxk,这样结果就是mxk,只是Matlab中是直接A .*B而已