Traduction de [IDL] en [Matlab] d'un petit programme

Traduction de [IDL] en [Matlab] d'un petit programme - Algo - Programmation

Marsh Posté le 01-12-2008 à 00:47:05    

Bonjour,
 
Voilà j'ai un problème sous matlab qui nécessite cette résolution. J'aimerais donc une aide pour tranformer 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 seism_direct :
 
********************************************************************
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
********************************************************************

Reply

Marsh Posté le 01-12-2008 à 00:47:05   

Reply

Marsh Posté le 01-12-2008 à 07:23:14    

Tu bloques sur quoi exactement ?

Reply

Marsh Posté le 01-12-2008 à 17:30:18    

- la boucle (genre le -1 DO BEGIN)
- le :  S[c,l]+=  (dans la boucle)
- le S=FLTARR (100,100) , ça je pense que c'est pour faire une matrice identité de 100 par 100 mais pourquoi la crée alors que normalement une boucle de 0 à 100 comme cela semble indiqué, marcherais aussi toute seule..
 
Voilà, merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed