Optimisation d'une boucle en Matlab
Résolu
donnie-darko
Messages postés
6
Statut
Membre
-
Utilisateur anonyme -
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 !
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
-
-
Donc pour toi ce n'est pas possible de prendre les éléments d'une matrice comme puissance?
-
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. -
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!