Matlab : dégradé sur des points alétoires

Fermé
Bertrand - 24 août 2009 à 14:52
dzgirl Messages postés 1 Date d'inscription vendredi 4 juillet 2014 Statut Membre Dernière intervention 4 juillet 2014 - 4 juil. 2014 à 01:46
Bonjour,

pour des coordonnées de n points (X,Y), j'ai calculé une quantité appelée Q dont les valeurs sont comprises entre 0 et 1 (il y a n valeurs pour Q)

je souhaiterais représenter,avec MATLAB, sur un graphe 2D, à l'emplacement d'un point (x0,y0), un point dont la couleur est un gris dont l'intensité dépend de sa valeur dans Q. (avec de préférence un fond d'une autre couleur : vert par exemple)

Je ne sais pas trop comment faire pour des points "non pixélisés" : je ne sais pas si la fonction imshow est adaptable.

D'avance, merci pour votre aide.

Bien Cordialement

3 réponses

Salut,
renseignes toi un peu sur les couleurs. Je sais que des planches de dégradées sont prédéfinies dans Matlab. Ensuite selon les coordonnées de ton points sur calcul un rapport min max te permettant de définir la couleur adaptée à ton point.
0
Pour ceux que ça intéresse : il faut définir un vecteur couleur de gris (pour chaque couple de données) de la manière suivante : grey = [Q(i) Q(i) Q(i)] pour i=1...n.
puis, on construit la figure pas à pas par : plot(X(i),Y(i),'.','Color',grey);
données :
X ; % de longueur n
Y ; % de longueur n
Q ; % de longueur n

Code :
h=axes;set(h,'Color',[0 1 0]); % met l'arrière plan en vert
hold on ; % pour permettre l'ajout de nouveaux points sur la figure
for (i=1:length(X))
grey=[] ;
grey=[ Q(i) Q(i) Q(i) ];
plot(X(i),Y(i),'.','Color',grey);
hold on; % pour permettre l'ajout de nouveaux points sur la figure
end

En pratique, il faut 1 seconde pour 100 points à tracer. Si quelqu'un voit comment optimiser l'algorithme, je suis preneur !
0
dzgirl Messages postés 1 Date d'inscription vendredi 4 juillet 2014 Statut Membre Dernière intervention 4 juillet 2014
4 juil. 2014 à 01:46
j'ai pas compris comment définir l'intensité Q et aussi les données X et Y
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
25 août 2009 à 09:53
à ta place, je ferai une image indéxé avec une colormap grise + verte.
Ensuite, tu fait une matrice (n,n) avec une valeur particulière et un imshow correcpondant.
Pour optimiser ton algorithme, tu pourrai regrouper les pixels de même valeur pour les tracer une seul fois.
plot doit être ce qui prend le plus de temps donc en diminuant le nombre d'appel à plot tu doit pouvoir diminuer ton temps d'exécution.
0