Traduire petit programme de [IDL] en [matlab]
Newenda
Messages postés
83
Statut
Membre
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Voilà j'ai un problème sous matlab qui nécessite cette résolution. J'aimerais donc une aide pour transformer le programme suivant (qui est en IDL) en code matlab. Ces deux langages sont surement très proches mais je bloque, c'est bête.
Merci d'avance,
********************************************************************
d_obs = TRANSPOSE([3.12, 3.26, 2.98, 3.12, 2.84, 2.98])
data_cov = DIAG_MATRIX(REPLICATE(.1^2, 6))
m_prior = TRANSPOSE([4, 15.5])
prior_cov = DIAG_MATRIX(REPLICATE(10.^2, 2))
S = FLTARR(100, 100)
FOR l = 0, 100 - 1 DO BEGIN
y = l / 5.
FOR c = 0, 100 - 1 DO BEGIN
x = c / 5.
S[c, l] = 1./2. * (TRANSPOSE(seismic_direct([x, y]) - d_obs) ## $
INVERT(data_cov) ## (seismic_direct([x, y]) - d_obs))
S[c, l]+= 1./2. * (TRANSPOSE([[x], [y]] - m_prior) ## $
INVERT(prior_cov) ## ([[x], [y]] - m_prior))
ENDFOR
ENDFOR
distribution = EXP(- S)
END
********************************************************************
avec la fonction[i] seism_direct/i :
********************************************************************
FUNCTION seismic_direct, m
x = [3., 3., 4., 4., 5., 5.]
y = [15., 16., 15., 16., 15., 16.]
v = 5
RETURN, TRANSPOSE(SQRT((m[0] - x)^2 + (m[1] - y)^2) / v)
END
********************************************************************
Voilà j'ai un problème sous matlab qui nécessite cette résolution. J'aimerais donc une aide pour transformer le programme suivant (qui est en IDL) en code matlab. Ces deux langages sont surement très proches mais je bloque, c'est bête.
Merci d'avance,
********************************************************************
d_obs = TRANSPOSE([3.12, 3.26, 2.98, 3.12, 2.84, 2.98])
data_cov = DIAG_MATRIX(REPLICATE(.1^2, 6))
m_prior = TRANSPOSE([4, 15.5])
prior_cov = DIAG_MATRIX(REPLICATE(10.^2, 2))
S = FLTARR(100, 100)
FOR l = 0, 100 - 1 DO BEGIN
y = l / 5.
FOR c = 0, 100 - 1 DO BEGIN
x = c / 5.
S[c, l] = 1./2. * (TRANSPOSE(seismic_direct([x, y]) - d_obs) ## $
INVERT(data_cov) ## (seismic_direct([x, y]) - d_obs))
S[c, l]+= 1./2. * (TRANSPOSE([[x], [y]] - m_prior) ## $
INVERT(prior_cov) ## ([[x], [y]] - m_prior))
ENDFOR
ENDFOR
distribution = EXP(- S)
END
********************************************************************
avec la fonction[i] seism_direct/i :
********************************************************************
FUNCTION seismic_direct, m
x = [3., 3., 4., 4., 5., 5.]
y = [15., 16., 15., 16., 15., 16.]
v = 5
RETURN, TRANSPOSE(SQRT((m[0] - x)^2 + (m[1] - y)^2) / v)
END
********************************************************************
A voir également:
- Traduire petit programme de [IDL] en [matlab]
- Comment traduire un site en français - Guide
- Programme demarrage windows - Guide
- Traduire image - Guide
- Mettre en veille un programme - Guide
- Comment imprimer une photo en petit ✓ - Forum Photo numérique
1 réponse
Salut.
Je ne connais pas IDL, mais je peux te donner quelques solutions sur les fonctions suffisamment parlantes.
la transposée d'une matrice A en MATLAB, c'est A', il suffit de rajouter une apostrophe derrière la variable.
L'appel à un élément d'une matrice se fait par S(l,c) et non S[l,c]
la boucle for :
for variable = debut:incrément:fin
...
end
la puissance s'exprime avec l'opérateur ^ qu'elle soit entière ou non.
Sinon, explique ce que tu veux faire d'autre.
Pour créer une matrice, il y a les fonctions ones et zeros qui créées des matrices respectivement pleines de uns et de zéros.
Je ne connais pas IDL, mais je peux te donner quelques solutions sur les fonctions suffisamment parlantes.
la transposée d'une matrice A en MATLAB, c'est A', il suffit de rajouter une apostrophe derrière la variable.
L'appel à un élément d'une matrice se fait par S(l,c) et non S[l,c]
la boucle for :
for variable = debut:incrément:fin
...
end
la puissance s'exprime avec l'opérateur ^ qu'elle soit entière ou non.
Sinon, explique ce que tu veux faire d'autre.
Pour créer une matrice, il y a les fonctions ones et zeros qui créées des matrices respectivement pleines de uns et de zéros.