Matlab : dégradé sur des points alétoires
Bertrand
-
dzgirl Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Matlab : dégradé sur des points alétoires
- Gnu octave matlab - Télécharger - Édition & Programmation
- Intervalle sur matlab ✓ - Forum Matlab
- Termes de Matlab ✓ - Forum Matlab
- Problème diffusion matlab - Forum Matlab
- Matlab 6.5 download - Forum Windows
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.
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.
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 !
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 !
à 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.
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.