[Octave] Problème de représentation graphique

Fermé
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - Modifié par Swiss Knight le 10/05/2011 à 09:42
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 12 mai 2011 à 15:24
Salut,

j'ai un petit souci sous Octave (qt) :
j'ai une matrice M et deux vecteurs qui représentent les coordonnées de chaque point de la matrice : X et Y
X=(240:1:500); 
Y=(290:1:500);


Les dimensions de M sont les bonnes vis-à-vis de X et Y.

Lorsque je fais un
mesh(X,Y,M);
le graphique ne commence pas à la coordonnée 240,290 mais 200,250.

Comment je peux lui dire de dessiner ma surface uniquement pour les valeurs de X et Y contenues dans ces deux vecteurs, ni avant, ni après, puisque je n'ai pas de valeurs et que ça reste bêtement blanc ?

Autre question :

comment saisir sur le graphique, à la souris, les coordonnées X,Y et Z (=l'intensité) dans un vecteur ?
X et Y c'est possible avec ginput(n) mais comment enregistrer la valeur en Z pour ces couples de points ????


Merci beaucoup et bonne nuit à tout-e-s.
A voir également:

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
10 mai 2011 à 11:00
Bonjour,
j'ai trouvé xlim et ylim qui devraient faire l'affaire. De manière général, je trouve que Octave n'est pas terrible pour faire des graphes (version 3.0). Je fait mes calculs sous octave, puis je sauve les données dans un fichier et je trace avec gnuplot.
pour ta deuxième question, je pense que c'est impossible. Lorsque tu clics avec la souris, tu as des coordonnes sur la vue. Ce point correspond à une droite dans un milieu 3D projeté, cette droite dépendra de l'angle de visualisation. De plus, cette droite peut couper plusieurs point de ta surface.
0
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 110
10 mai 2011 à 15:35
hnmm, je me suis mal exprimé je crois,
en fait c'est pas vraiment de la 3D ; j'ai une matrice M relativement grande
où les colonnes sont les Y et les lignes les X en terme de coordonnées, et les valeurs qu'on lit dans la matrice sont des valeurs d'intensité de quelque chose.

J'aimerai bien pouvoir sélectionner sur l'image plotée de la matrice M certains points intéressants et qu'en cliquant dessus ça me renvoie non seulement X et Y mais aussi la valeur lue dans M (ou la valeur la plus proche) pour ces coordonnées.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
11 mai 2011 à 08:11
ok, c'est clair. Mais ça ne change rien, si tu utilises mesh, même avec un angle spécial, pour Octave c'est toujours de la 3D (si c'est bien mesh que tu utilises). Ceci dit, si tu arrive à récupérer les bon X et Y en cliquant, il te suffit de faire ta propre fonction avec ginput et ensuite de chercher la valeur la plus proche dans la matrice. Ce que je fais, si tu lit xi comme coordonnée, l'indice le plus proche dans le vecteur X je l'obtient ainsi :
[bidon,index]=min(abs(X-xi));
index contiendra ta valeur. En faisant pareil avec Y, tu trouves M(index,indey) comme valeur.

Sous Octave plutôt que mesh, pour faire des images, j'utilises image ou imagesc, le rendu est un peu meilleur en plus.
0
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 110
Modifié par Swiss Knight le 12/05/2011 à 15:25
salut.
j'utilise contourf(X,Y,Matrice'); et pas mesh.
Avec [xx,yy]=ginput(3); je récupère les trois couples de coordonnées xx,yy de mes trois clics.
le problème c'est que ce sont des coordonnées exactes (double) alors que celles de la matrice sont des nombres entiers.
Je pourrais lui dire d'aller "à la coordonnée la plus proche selon X et à celle la plus proche selon Y et me retourner la valeur lue dans Matrice' mais suivant comment le logiciel créée les courbes de niveau, j'ai peut-être meilleur temps de lui demander de me retourner la valeur la plus haute des 4 entourant les coordonnées d'un clic...
Je vais voir si je m'en sors avec ça, mais c'est pas gagné.
0