Optimisation d'une boucle en Matlab [Résolu/Fermé]

Signaler
Messages postés
6
Date d'inscription
jeudi 7 mai 2009
Statut
Membre
Dernière intervention
19 mai 2009
-
 Utilisateur anonyme -
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


J'aurais fais pareil ^^
Messages postés
6
Date d'inscription
jeudi 7 mai 2009
Statut
Membre
Dernière intervention
19 mai 2009

Donc pour toi ce n'est pas possible de prendre les éléments d'une matrice comme puissance?
Utilisateur anonyme
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 !
Messages postés
6
Date d'inscription
jeudi 7 mai 2009
Statut
Membre
Dernière intervention
19 mai 2009

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.
Utilisateur anonyme
http://www.nesc.ucl.ac.be/enseignement/tutorials/Commandes_Graphics.pdf

Page 4, tu peux tester A.^B puissance élément par élément =)
Messages postés
6
Date d'inscription
jeudi 7 mai 2009
Statut
Membre
Dernière intervention
19 mai 2009

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!
Utilisateur anonyme
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 =)