2016-03-26 9 views
5

行列のベクトルを減算しようとしています。私は要素行列のベクトルを下位にする、またはベクトルを追加する

x1 x2 x3 x4 
y1 y2 y3 y4 
z1 z2 z3 z4 

と行列Aがあると言い換えると、私はベクトル

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) 

しかし、これはかなり粗雑です。また、特に行列が非常に大きい場合に、いくつかの合計または残余を計算する必要がある場合、この方法は実用的ではありません。私はよりエレガントにやりたいと思っています。行列の内部にベクトルを指定する方法はありますか?または、これを行うラウンドアバウト方法はありますか?

答えて

3

アレイスライスを[start]:[end][:stride](Fortran 2008 Standard、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) 
関連する問題