Bonjour a tous,
j'utilise dans une simulation numerique une fonction que j'applique a tous les elements d'une matrice, et qui renvoie pour un element x de la matrice:
sigma(x)= (1-exp(-abs(x)))/(abs(x)) si x different de 0
et sigma(x)=1 si x=0
Actuellement, j'utilise une methode tres naive, a savoir je parcours tous les elements de la matrice un a uns et applique le calcul sigma suivant qu'ils sont nuls ou non nuls..
Y a t'il moyen de proceder plus rapidement? j'ai remarque qu'en appliquant le calcul directement sur la matrice, cad (1-exp(abs(A)))./(abs(A)) c'est beaucoup plus rapide, mais il y a un probleme pour les elements nuls de A (renvoie NaN...).
Voyez vous une methode de proceder plus rapide que ma methode naive?
Merci de toute indication
Voila mon code pour etre plus clair:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function [sigma]=sigma(v) [k l]=size(v); sig=zeros(k,l); for i=1:k for j=1:l if (v(i,j)==0) sig(i,j)=1; else sig(i,j)=(1-exp(-abs(v(i,j))))/(abs(v(i,j))); end end end sigma=sig;
Partager