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

Bertrand -  
dzgirl Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

3 réponses

Mc Fly
 
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
Bertrand
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 299
 
à 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