Optimisation d'une boucle en Matlab

Résolu/Fermé
donnie-darko Messages postés 6 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 19 mai 2009 - 7 mai 2009 à 14:49
 Utilisateur anonyme - 11 mai 2009 à 11:55
Bonjour,

Je sais que c'est mal d'utiliser les boucles en Matlab, mais je n'ai pas eu le choix. J'utilise cette boucle pour manipuler de grosses matrices (360,180,52).

for freq=1:52
for i=1:360
for j=1:180

A(i,j,freq)=10*log10(10^((B(i,j,freq))/10)+10^(C(i,j,freq)/10));

end
end
end

Je dois donc additionner 2 matrices en dB, en les linéarisant, puis repasser en dB.
Ce calcul est très couteux en temps.

L'idéal serait d'avoir une fonction matlab qui permette d'élever un nombre à une puissance qui serait l'élément d'une matrice, du genre :

10^M (je sais que c'est une aberration).

Sinon, quelqu'un pourrait me dire comment optimiser cette boucle, ou carrément l'éviter?

Merci !

4 réponses

Utilisateur anonyme
7 mai 2009 à 17:21
J'aurais fais pareil ^^
0
donnie-darko Messages postés 6 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 19 mai 2009
11 mai 2009 à 10:00
Donc pour toi ce n'est pas possible de prendre les éléments d'une matrice comme puissance?
0
Utilisateur anonyme
11 mai 2009 à 10:18
Tu fais déjà ça ?! quand tu fais 10^(B(i,j,freq) tu élèves 10 à la puissance B(i,j,freq) qui est un élément d'une matrice.

Sinon je n'ai pas compris ta question ^^

Je n'ai pas Matlab sous la main pour tester !
0
donnie-darko Messages postés 6 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 19 mai 2009
11 mai 2009 à 10:41
Ce que j'aimerais faire c'est effectuer une opération directement sur la matrice sans avoir recours aux boucles for. Par exemple, pour faire une multiplication élément par élément on fait M.*N.
Je voudrais faire la même chose pour la puissance, ca m'économiserait du temps de calcul.
0
Utilisateur anonyme
11 mai 2009 à 11:10
http://www.nesc.ucl.ac.be/enseignement/tutorials/Commandes_Graphics.pdf

Page 4, tu peux tester A.^B puissance élément par élément =)
0
donnie-darko Messages postés 6 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 19 mai 2009
11 mai 2009 à 11:36
Simple et efficace, tellement simple que j'y avais pas pensé. Trop la honte! ^^

Merci en tout cas, mon programme tourne 8 fois plus vite. C'est excellent!
0
Utilisateur anonyme
11 mai 2009 à 11:55
Lol derien, j'y avais même pas pensé ! j'avais cette doc sous la main, une sorte d'anti-sèche ^^.

bonne journée =)
0