Optimisation d'une boucle en Matlab

Résolu
donnie-darko Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
 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

Utilisateur anonyme
 
J'aurais fais pareil ^^
0
donnie-darko Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Donc pour toi ce n'est pas possible de prendre les éléments d'une matrice comme puissance?
0
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 !
0
donnie-darko Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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
 
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   Statut Membre Dernière intervention  
 
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
 
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