maths of arrays

Taiseer
01-13-2011, 02:36 PM
Dear all,

I have one matrix of 450*550, let us say matrix_a
I want to generate a new matrix (let is say matrix_b, off course 450*550). The elements of this matrix (matrix_b) has all the same value (let us say 1.5).

Now I want to generate a third matrix whihc is matrix_c = matrix_a + matrix_b.

Thanks
Taiseer

davekw7x
01-15-2011, 09:44 AM
...matrix_c = matrix_a + matrix_b
In Fortran 90 matrix arithmetic operations are carried out element-by-element. Just add them with a normal-looking arithmetic expression.

IMPLICIT NONE

INTEGER i, j
REAL a(2,3), b(2,3), c(2,3)

a(1,:) = (/ 1.0, 2.0, 3.0 /)
a(2,:) = (/ 4.0, 5.0, 6.0 /)

b(1,:) = (/ 7.0, 8.0, 9.0 /)
b(2,:) = (/10.0, 11.0, 12.0 /)

c = a + b ! Yes! That's all it takes to add the matrices. Really.

do i = 1, 2
do j = 1, 3
write(*, '("a(",I0,",",I0,") = ", f4.1)') i, j, a(i,j)
end do
end do
write(*,*)

do i = 1, 2
do j = 1, 3
write(*, '("b(",I0,",",I0,") = ", f4.1)') i, j, b(i,j)
end do
end do
write(*,*)

do i = 1, 2
do j = 1, 3
write(*, '("c(",I0,",",I0,") = ", f4.1)') i, j, c(i,j)
end do
end do

Output:
a(1,1) = 1.0
a(1,2) = 2.0
a(1,3) = 3.0
a(2,1) = 4.0
a(2,2) = 5.0
a(2,3) = 6.0

b(1,1) = 7.0
b(1,2) = 8.0
b(1,3) = 9.0
b(2,1) = 10.0
b(2,2) = 11.0
b(2,3) = 12.0

c(1,1) = 8.0
c(1,2) = 10.0
c(1,3) = 12.0
c(2,1) = 14.0
c(2,2) = 16.0
c(2,3) = 18.0

Regards,

Dave