Bonjour à tous,
Je reviens sur la discussion que j'avais lancé en début de semaine (10/03) pour remplir une matrice à parti d'un vecteur.
J'ai un vecteur pos de Nd (nombre de diffuseurs) lignes et 2 colonnes (coordonnées x et y). Les diffuseurs ont des coordonnées sur une grille entre [0 Tx] et [0 Ty].
L'idée était de créer une matrice posit contenant comme valeur le nombre de diffuseurs pour chaque noeud.
La solution suivante faisant bien ce qui est souhaité.
Néanmoins, je souhaite à présent que chaque diffuseur à une position (x,y) donnée ait un poids distribué gaussien avec randn. La matrice de sortie posit devra prendre en compte ces poids.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 pos = round(2*rand(8,2)+1) [upos,A,B] = unique(pos,'rows'); nB = histc(B,unique(B)); [x,y] = meshgrid(1:max(pos(:,1)),1:max(pos(:,2))); posit = zeros(size(x)).'; idx = sub2ind(size(posit),upos(:,1),upos(:,2)); posit(idx) = nB
Exemple :
le diffuseur de coordonnées (1,1) aura comme poids 0.3, (3,2) 0.5 et (2,3) 0.7.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 pos = [1 1 3 2 2 3]
Posit ressemblera donc à :
au lieu de:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [0.3 0.0 0.0 0.0 0.0 0.7 0.0 0.5 0.0]
comme avant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [1 0 0 0 0 1 0 1 0]
S'il y a plusieurs diffuseurs par noeud, on additionnera les poids.
J'ai bien pensé à faire un find sur chaque coordonnées puis sommer les poids d'indice correspondant mais je ne suis pas sûr que ce soit optimum.
Merci d'avance,
Adrien
Partager