Bonjour à tous.
Je sollicite votre aide, car je bloque sur une factorisation d'un calcul sans passer par les boucles for très gourmandes en temps de calcul.
Je dispose d'une matrice en entrée de taille nL*3 et ce que je calcule c'est une matrice dist de taille nL*nL qui contient toutes les valeurs des inter-distances entre les lignes de la matrice en entrée.
Par exemple si la matrice suivante est donnée :
Le résultat est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 M=[1000.0011 2000.0011 500.0011 1000.0012 2000.0012 500.0012 1000.0013 2000.0013 500.0013 1000.0100 2000.0100 500.0100 1000.0300 2000.0300 500.0300];
Pour l'instant, le code qui me permet de faire ce calcul est le suivant et n'est pas du tout adapté lorsque le nombre de lignes de M est très grand :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 dist = 0.000000 0.000173 0.000346 0.015415 0.050056 0.000173 0.000000 0.000173 0.015242 0.049883 0.000346 0.000173 0.000000 0.015069 0.049710 0.015415 0.015242 0.015069 0.000000 0.034641 0.050056 0.049883 0.049710 0.034641 0.000000
merci pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 nL=size(M,1); for i=1:nL for j=1:nL dist(i,j)=norm([M(i,:)-M(j,:)]); endfor endfor
Partager