我试图减去矩阵的向量。换句话说,假设我有带元素的矩阵A
x1 x2 x3 x4
y1 y2 y3 y4
z1 z2 z3 z4
我希望能够减去矢量
x1
y1
z1
和
x2
y2
z2
我怎么能这样做?我试着做了
implict none
real, dimension(3,4) :: A
real,dimension(3) :: vector
vector(1)=A(1,1)-A(1,2)
vector(2)=A(2,1)-A(2,2)
vector(3)=A(3,1)-A(3,2)
然而,这是相当粗糙的。此外,如果我需要计算几个总和或残差,这种方法是不切实际的,特别是当矩阵非常大时。我希望能够更优雅地做到这一点。
有没有办法在矩阵中指定向量?或者有一种迂回的方式来做到这一点?
答案 0 :(得分:4)
您可以通过[start]:[end][:stride]
指定数组切片(Fortran 2008 Standard,Cl.6.5.3"数组元素和数组部分":R621)。要选择指定维度上的所有元素,请选择例如A(:,1)
。你的不同之处在于:
implicit none
real, dimension(3,4) :: A
real,dimension(3) :: vector
vector(:)=A(:,1)-A(:,2)
甚至
vector=A(:,1)-A(:,2)