Traduire petit programme de [IDL] en [matlab]
Newenda
Messages postés
75
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 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
- Petit 2 ✓ - Forum Bureautique
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.