Conversion de Python à MATLAB
Bonjour à tous.
Je suis actuellement en train de m'arracher les cheveux sur la possibilité de "traduire" une fonction écrite en python afin de l'utiliser sur Matlab
Mais comme je n'ai jamais programmé en python, je galère.... Du coup, je me demandais s'il existait une façon simple de le faire, ou si une âme charitable pouvait m'aider à traduire les lignes suivantes
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
def pea(temp, salinity, depth, levels):
"""
Calculate potential energy anomaly (stratification index).
Parameters
----------
temp : ndarray
Temperature data (depth-resolved).
salinity : ndarray
Salinity data (depth-resolved).
depth : ndarray
Water depth (positive down). Can be 1D (node) or 3D (time, siglay,
node).
levels : ndarray
Vertical levels (fractions of 0-1) (FVCOM = siglev).
Returns
-------
PEA : ndarray
Potential energy anomaly (J/m^{3}).
Notes
-----
"""
nd = np.ndim(depth)
g = 9.81
rho = dens_jackett(temp, salinity)
dz = np.abs(np.diff(levels, axis=0)) * depth
if nd == 1:
# dims is time only.
H = np.cumsum(dz, axis=0)
nz = dz.shape[0]
else:
# dims are [time, siglay, node].
H = np.cumsum(dz, axis=1)
nz = dz.shape[1]
# Depth-averaged density
rhobar = zbar(rho, dz)
# Potential energy anomaly.
PEA = np.zeros(rhobar.shape)
# Hofmeister thesis equation.
for i in range(nz):
if nd == 1:
PEA = PEA + ((rho[:, i, :] - rhobar) * g * H[i, :] * dz[i, :])
else:
PEA = PEA + ((rho[:, i, :] - rhobar) * g * H[:, i, :] * dz[:, i, :])
if nd == 1:
PEA = (1.0 / depth) * PEA
else:
PEA = (1.0 / depth.max(axis=1)) * PEA
return PEA |
Sachant que pour la fonction, "dens_jackett" (disponible sur ce lien https://github.com/pwcazenave/PyFVCO...ocean_tools.py), j'ai déjà mon équivalent en Matlab.
Merci d'avance de vos conseils et de votre aide!