khoshchehre13
11-05-2011, 09:04
با سلام
من یک برنامه رو که بهش نیاز دارم از اینترنت گرفتهام ولی نمیدونم که به زبان C نوشته شده و یا زبان فورترن و یا زبان دیگه!! چون من باید اون رو به کد متلب تبدیل کنم. حالا خواستم بدونم که این برنامه به چه زبانی نوشته شده؟
Sigmoid -- Make sigmoid reflectivity model.
#
# Sigmoid [n1=400 n2=100 o1=0 d1=.004 o2=0 d2=.032 ] > out.H
#%
integer large, n1,n3, esize,n2
from par: integer n1=400, n2=100, n3=1, esize=4, large=5*n1
allocate: real imp1(large), imp2(large)
allocate: real dipper(n1,n2), earth(n1,n2), refl(n1,n2)
allocate: real sig1(n1,n2), sig2(n1,n2), fault(n1,n2)
subroutine doit( n1,n2,large, imp1,imp2,dipper,sig1,sig2,fault,earth,refl)
integer n1,n2,large
real imp1(large), imp2(large)
real dipper(n1,n2), earth(n1,n2), refl(n1,n2), t, frac
real sig1(n1,n2), sig2(n1,n2), fault(n1,n2)
integer i1,i2, iseed, it, is
real o1,d1,o2,d2, rand01, x
from par: real o1=0.,d1=.004, o2=0,d2=.032
call putch('label1','s','sec')
call putch('label2','s','km')
iseed = 19921995
imp1(1) = 1.
do i1= 2, large {
if( rand01(iseed) > .2 ) { imp1(i1) = imp1(i1-1) }
else { imp1(i1) = 1. + .1 * rand01(iseed) }
}
imp2(1) = 1.
do i1= 2, large {
if( rand01(iseed) > .3 ) { imp2(i1) = imp2(i1-1) }
else { imp2(i1) = 1. + .1 * rand01(iseed) }
}
call zero( n1*n2, dipper)
do i2= 1, n2 {
do i1= 1, n1 {
t = i1 + i2 * .3 * (1.*n1)/(1.*n2)
it = t
frac = t - it
dipper ( i1, i2) = imp1( it) * (1.-frac) + imp1( it+1) * frac
}}
call zero( n1*n2, sig1)
call zero( n1*n2, sig2)
do i2= 1, n2 {
do i1= 1, n1 {
t = i1 + n1 *.15 * ( 1.1 + cos( ( 3 *3.14 * i2)/n2) )
it = t
is = it + 10
frac = t - it
sig1( i1, i2) = imp2( it) * (1.-frac) + imp2( it+1) * frac
sig2( i1, i2) = imp2( is) * (1.-frac) + imp2( is+1) * frac
}}
do i2= 1, n2 { # fault
do i1= 1, n1 {
# if( (i2-.9*n2) < -.75*n1*((i1+1.)/n1)**2 )
if( (float(i2)/n2-.9) < -.75*((i1+1.)/n1)**2 )
fault(i1,i2) = sig1(i1,i2)
else
fault(i1,i2) = sig2(i1,i2)
}}
do i2= 1, n2 {
do i1= 1, n1 {
it = i1 + i2 * .3 * (1.*n1)/(1.*n2)
if( it > n1/2 ) { earth(i1,i2) = fault(i1,i2) }
else { earth(i1,i2) = dipper (i1,i2) }
}}
do i2= 1, n2 { refl(1,i2) = 0.
do i1= 2, n1 {
refl(i1,i2) = ( earth(i1-1,i2) - earth(i1,i2) ) / _
( earth(i1-1,i2) + earth(i1,i2) )
}}
do i1= 1, n1 {
do i2= 1, 10
refl(i1,i2) = refl(i1,i2) * (i2) / 10.
do i2= n2, n2-10+1, -1
refl(i1,i2) = refl(i1,i2) * (n2-i2+1) / 10.
}
do i2= 1, n2 {
do i1= 1, 5
refl(i1,i2) = refl(i1,i2) * (i1) / 5.
do i1= n1, n1-5+1, -1
refl(i1,i2) = refl(i1,i2) * (n1-i1+1) / 5.
}
call hclose()
call srite( 'out', refl, 4*n1*n2)
return; end
من یک برنامه رو که بهش نیاز دارم از اینترنت گرفتهام ولی نمیدونم که به زبان C نوشته شده و یا زبان فورترن و یا زبان دیگه!! چون من باید اون رو به کد متلب تبدیل کنم. حالا خواستم بدونم که این برنامه به چه زبانی نوشته شده؟
Sigmoid -- Make sigmoid reflectivity model.
#
# Sigmoid [n1=400 n2=100 o1=0 d1=.004 o2=0 d2=.032 ] > out.H
#%
integer large, n1,n3, esize,n2
from par: integer n1=400, n2=100, n3=1, esize=4, large=5*n1
allocate: real imp1(large), imp2(large)
allocate: real dipper(n1,n2), earth(n1,n2), refl(n1,n2)
allocate: real sig1(n1,n2), sig2(n1,n2), fault(n1,n2)
subroutine doit( n1,n2,large, imp1,imp2,dipper,sig1,sig2,fault,earth,refl)
integer n1,n2,large
real imp1(large), imp2(large)
real dipper(n1,n2), earth(n1,n2), refl(n1,n2), t, frac
real sig1(n1,n2), sig2(n1,n2), fault(n1,n2)
integer i1,i2, iseed, it, is
real o1,d1,o2,d2, rand01, x
from par: real o1=0.,d1=.004, o2=0,d2=.032
call putch('label1','s','sec')
call putch('label2','s','km')
iseed = 19921995
imp1(1) = 1.
do i1= 2, large {
if( rand01(iseed) > .2 ) { imp1(i1) = imp1(i1-1) }
else { imp1(i1) = 1. + .1 * rand01(iseed) }
}
imp2(1) = 1.
do i1= 2, large {
if( rand01(iseed) > .3 ) { imp2(i1) = imp2(i1-1) }
else { imp2(i1) = 1. + .1 * rand01(iseed) }
}
call zero( n1*n2, dipper)
do i2= 1, n2 {
do i1= 1, n1 {
t = i1 + i2 * .3 * (1.*n1)/(1.*n2)
it = t
frac = t - it
dipper ( i1, i2) = imp1( it) * (1.-frac) + imp1( it+1) * frac
}}
call zero( n1*n2, sig1)
call zero( n1*n2, sig2)
do i2= 1, n2 {
do i1= 1, n1 {
t = i1 + n1 *.15 * ( 1.1 + cos( ( 3 *3.14 * i2)/n2) )
it = t
is = it + 10
frac = t - it
sig1( i1, i2) = imp2( it) * (1.-frac) + imp2( it+1) * frac
sig2( i1, i2) = imp2( is) * (1.-frac) + imp2( is+1) * frac
}}
do i2= 1, n2 { # fault
do i1= 1, n1 {
# if( (i2-.9*n2) < -.75*n1*((i1+1.)/n1)**2 )
if( (float(i2)/n2-.9) < -.75*((i1+1.)/n1)**2 )
fault(i1,i2) = sig1(i1,i2)
else
fault(i1,i2) = sig2(i1,i2)
}}
do i2= 1, n2 {
do i1= 1, n1 {
it = i1 + i2 * .3 * (1.*n1)/(1.*n2)
if( it > n1/2 ) { earth(i1,i2) = fault(i1,i2) }
else { earth(i1,i2) = dipper (i1,i2) }
}}
do i2= 1, n2 { refl(1,i2) = 0.
do i1= 2, n1 {
refl(i1,i2) = ( earth(i1-1,i2) - earth(i1,i2) ) / _
( earth(i1-1,i2) + earth(i1,i2) )
}}
do i1= 1, n1 {
do i2= 1, 10
refl(i1,i2) = refl(i1,i2) * (i2) / 10.
do i2= n2, n2-10+1, -1
refl(i1,i2) = refl(i1,i2) * (n2-i2+1) / 10.
}
do i2= 1, n2 {
do i1= 1, 5
refl(i1,i2) = refl(i1,i2) * (i1) / 5.
do i1= n1, n1-5+1, -1
refl(i1,i2) = refl(i1,i2) * (n1-i1+1) / 5.
}
call hclose()
call srite( 'out', refl, 4*n1*n2)
return; end