How to convert this 2D code segment with random number into the FORTRAN code?
1 view (last 30 days)
Show older comments
Nx = 4
Ny = 4
c1 = 0.12
rr = 0.0001
for i=1:Nx
for j=1:Ny
D(i,j) =c1 + rr*(0.5-rand);
end
end
It contains random number in Matlab code and it is also in 2D.
Accepted Answer
A King
on 18 Aug 2020
Edited: A King
on 18 Aug 2020
James Response in the above is correct. I would only say that it can be further modernized with the new, more specific, Fortran 2003 syntax, which makes it compiler and architecture independent:
use iso_fortran_env, only: IK => int32, RK => real64
integer(IK), parameter :: Nx = 4_IK
integer(IK), parameter :: Ny = 4_IK
real(RK), parameter :: c1 = 0.12_RK
real(RK), parameter :: rr = 0.0001_RK
real(RK) :: D(Nx,Ny)
call random_number(D)
D = c1 + rr * (0.5_RK - D);
write(*,*) D
end
You can test it here: https://www.tutorialspoint.com/compile_fortran_online.php
More Answers (1)
James Tursa
on 18 Aug 2020
Edited: James Tursa
on 18 Aug 2020
For your particular case, looks like the MATLAB code could reduce to:
Nx = 4;
Ny = 4;
c1 = 0.12;
rr = 0.0001;
D = c1 + rr*(0.5-rand(Nx,Ny));
The Fortran equivalent could be
integer, parameter :: Nx = 4
integer, parameter :: Ny = 4
double precision :: c1 = 0.12d0
double precision :: rr = 0.0001d0
double precision D(Nx,Ny)
call random_number(D)
D = c1 + rr*(0.5d0-D);
See Also
Categories
Find more on Fortran with MATLAB in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!