I have a code in python and want to convert it in matlab format
2 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
回答(1 个)
Steven Lord
2024-4-15
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Call Python from MATLAB 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!