Clear Filters
Clear Filters

I have a code in python and want to convert it in matlab format

2 views (last 30 days)
def DEM(Km, Gm, Ki, Gi, alphai, phii, phi0=0.0, r=1000, phitol=1.0E-10, gamma=0.01):
phi = np.sum(phii)
fraci = phii / np.sum(phi)
ci = fraci * alphai / r
n = int(np.ceil((np.log(1.0 - phi) - np.log(1.0 - phi0)) / np.sum(np.log(1.0 - ci))))
m = len(alphai)
def func(r):
f = np.empty(m)
f[0] = np.log(alphai[0] / r[0]) + np.log(1.0 - phi0 / phi) - np.log(
1 - ((1.0 - phi) / (1.0 - phi0)) ** (1.0 / n))
for j in range(1, m):
f[j] = f[j - 1] + np.log(alphai[j] / r[j]) + np.log(r[j - 1] / alphai[j - 1] - fraci[j - 1])
return f
def fprime(r):
jac = np.diag(-1.0 / r)
for j in range(0, m - 1):
jac[j + 1:, j] = -1.0 / r[j] + 1.0 / (r[j] - fraci[j] * alphai[j])
return jac
r0 = r * np.ones(m)
ri = fsolve(func, r0, fprime=fprime, factor=0.1)
ci = fraci * alphai / ri
thetai = theta(alphai)
fi = f(alphai, thetai)
K = np.empty(n)
G = np.empty(n)
phi = np.empty(n)
K_ = Km
G_ = Gm
phi_ = phi0
for i in range(n):
dphi = ci[0] * (1.0 - phi_)
K_, G_ = KG(K_, G_, Ki[0], Gi[0], ci[0], thetai[0], fi[0])
phi_ += dphi
for j in range(1, m):
dphi *= ci[j] * (1.0 - ci[j - 1]) / ci[j - 1]
K_, G_ = KG(K_, G_, Ki[j], Gi[j], ci[j], thetai[j], fi[j])
phi_ += dphi
K[i] = K_
G[i] = G_
phi[i] = phi_
return K, G, phi

Answers (1)

Steven Lord
Steven Lord on 15 Apr 2024
Do you need to convert the code or would being able to run the code in MATLAB be sufficient? If the latter, see the documentation for instructions on how to run Python code in MATLAB.

Products


Release

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!