Rechercher : dans
Par :

[MATLAB] Légende des axes

Dernière réponse le 4 sep 2008 à 12:18:36 jebok, le 7 jun 2005 à 21:33:39 
 Signaler ce message aux modérateurs

Bonjour,
lorsque qu'on affiche un graphique, la légende de l'axe vertical (ylabel) s'affiche verticalement, donc il faut pencher la tête pour la lire.
Y a-t-il un moyen de modifier l'orientation du texte ?
Et pour mettre des lettres en indice / exposant, c'est possible ?

Merci de votre aide Mal nommer les choses, c'est ajouter aux malheurs du monde.
(Albert Camus)

Configuration: Matlab 7

Meilleures réponses pour « [MATLAB] Légende des axes » dans :
Représentation des courbes sous Matlab Voir La fonction plot permet essentiellement de tracer des courbes sous Matlab. Dans cette astuce, nous allons essayer de détailler le fonctionnement de cette commande. Simple utilisation Vecteur Matrice Vecteur en fonction d'un autre Autres...
Légende automatique sous Word VoirCréer automatiquement une légende sous Word Personnalisation de la barre d'outils Insertion de l'image Insertion de l'étiquette Insertion de nouvelles étiquettes Le renvoi vers une figure Personnalisation de la barre d'outils Pour...
Concaténer les vecteurs ou les matrices sous Matlab VoirL'opération de concaténation des variables de Matlab consiste à regrouper ces variables dans une seule (vecteur ou matrice). Exemple : |2 3 4| X= |1 2 5| |0 2 7| Avec : |9 6 8| Y= |5 6 2| |3 2 1| Donne...

1

pom, le 8 jun 2005 à 09:18:18

Salut,

si tu veux mettre un caractere en indice, utilise le underscore et pour mettre en exposant, utilise le ^.

exemple : x_7 z^9

si tu veux mettre plusieurs caractère en indice, utilise les { }

exemple

x_{78} -> mettra 78 en indice
z^{99} -> mettra 99 en exposant
x^{78}_{99} -> mettre 78 en exposant et 99 en indice

ensuite tu peux jouer avec les underscore et els ^

exemple : x^{78_9}_{87^{45}} -> même logique

Si tu veux mettre des lettres grecques, utilise le \

exemple : \alpha \beta \xi

donc tu obtiens qqch du genre :

\beta^{78}_{99} \xi_{7^9}

voici un test matlab ;

x=-pi:0.01:pi;
plot(x,cos(x),'r')
title('x_7 \theta_8 \xi_{99}^{45^7}')

connais-tu latex ? C'est exactement la même syntaxe.

Répondre à pom

2

jebok, le 8 jun 2005 à 13:35:39

Je te remercie pour ces explications, ca marche nickel !
Par contre, j'ai toujours pas trouvé pour faire tourner les légendes des axes.

Mal nommer les choses, c'est ajouter aux malheurs du monde.
(Albert Camus)

Répondre à jebok

3

pom, le 8 jun 2005 à 14:36:24

Salut, concernantv les axes, je ne sais pas...

Répondre à pom

4

laurenttls, le 16 jun 2005 à 10:42:46

Salut pom.
j'ai un soucis avec matlab. je dois faire communiquer un analyseur de spectre avec matlab. ca, ca marche, le soucis c'est que je dois recuperer plusieurs valeurs a diffrentes frequences. les commandes, je les connais. c'est pour afficher que je ne connais pas. il ne veut pas m'afficher une ligne en desous d'une autre ligne.
ce que je voudrais c'est d'avoir un tableau a trois colonnes, et pour les imprimer apres.
merci a toi
laurent

Répondre à laurenttls

5

pom, le 16 jun 2005 à 13:45:47

Salut Laurenttls,

Je vais sûrement te répndre des trucs trop simples :

1e idée : tu fais une matrice à trois colonnes,
2e idée : tu fais un fprintf : regarde la doc pour son utilisation. Si tu n'y arrives pas, renvoie un post

3e idée : tu fais un diary

exemple :

tu te crées un fichier : main.m (par exemple).

clear all

a=1

diary toto.txt

b=2
c=3
d=4;
e=5

diary off

tu lances ce fichier main.m et tu verras qu'un fichier toto.txt a été crée, dans lequel il est écrit :

b=2
c=3
e=5

d=4 n'est pas écrit car du fait de point virgule, il n'est pas affiché dan la feuille de calculs.

donc ej te propose de faire une matrice à trois colonnes puis un diary

j'espère que ca t'aide.

Cordialement

Répondre à pom

6

laurent, le 16 jun 2005 à 15:05:29

Merci deja d'avoir repondu si rapidement.
je vais essayer de faire. je te tiens au courant. ja' une autre question toute aussi bete, mais je ne sais pas comment faire.
par exemple, j'ai deja un edit text, je lance le programme, je rentre une valeur et j'arrive a la recuperer. cependant je ne voudrais que certaines valeurs deja defnis. j'utilise donc un popupmenu, je rentre les valeurs. je lance le programme, je choisis la valeur mais j'arrive pas a recuperer la valeur souhaitee.
sais tu pourquoi et comment je peux m'en sortir.
merci
laurent

Répondre à laurent

7

pom, le 16 jun 2005 à 15:52:02

Salut Laurent, excuse-moi, mais je n'ai rien compris à ton problème...

que veut dire
"j'ai deja un edit text, je lance le programme, je rentre une valeur et j'arrive a la recuperer. cependant je ne voudrais que certaines valeurs deja defnis" ?

qu'est-ce qu'un popupmenu ?

Peux-tu être un peu plus explicite s'il te plait ?

Merci

Répondre à pom

8

laurenttls, le 16 jun 2005 à 16:04:30

Deja, l'enregistrement dans un fichier, ca marche. c'est exactement ce que je voulais. par contre, il y a un moyen de choisir de l'emplacement et du nom du fichier dans lequel tu enregistres tes valeurs?
pour le probleme, j'utilise GUI de matlab. et c'est un peu comme Visual Basic. popupmenu et edittext, ce sont des Unites, des "objet " en gros. un popupmenu, c'est un menu deroulant. alors qu'un edittext, c'est une case ou tu peux entrer ta valeur toi meme.
voila. je ne sais si j'ai ete clair.
Laurent

Répondre à laurenttls

9

pom, le 16 jun 2005 à 16:19:59

Il y a un moyen de choisir de l'emplacement et du nom du fichier dans lequel tu enregistres tes valeurs?

Oui :
emplacement : si tu as utilise diary, il enregistre exactement, et a la meme place, les sorties de ton prgm. Tu ne choisis pas le mise en page de la sortie, a moins de la programmer dans ton fichier matlab.

regarde le fprintf et le sprintf dans la doc

nom de fichier : tu lui donnes un nom quelconque

ai-je repondu a ta question ?

En matlab je ne me sers que de l'editeur de texte et de la console.

Répondre à pom

10

laurenttls, le 16 jun 2005 à 16:26:41

Merci encore, ca repond a mes questions.
pour l'instant j'avance bien grace a ton aide. je te tiens au courant des mes avancees sur ce projet, je connais matlab que depuis 2 semaines. je te recontacterais certainement ces prochains jours.
merci a toi
Laurent

Répondre à laurenttls

11

pom, le 16 jun 2005 à 16:49:57

Ok, bon courage en tout cas

Répondre à pom

12

laurenttls, le 17 jun 2005 à 11:29:45

Bjr pom. j'ai encore qqs petits soucis, et je pense que tu pourrais m'aider... a propos du fichier .txt
je donne un nom et je concatene avec.txt, comme ca il me cree sous le nom que je veux. par contre,
voila ce que j'aimerais faire:

------------------------------------------------------------­------------
NUMBER .............FREQUENCY.................VALUES
------------------------------------------------------------­------------
1 ......................... f1 ............................ v1
2 ......................... f2 ........................... v2
.... .... .....


je choisis deux frequence et une marche de frequence, je dois afficher ainsi ces differentes frequencede f1 a f2, par pas de prequence et les differentes valeurs coreespondantes, mais j'aierais que ca s'affiche comme ca. en VB je saurais le faire, mais j'ai essaye la meme avec matlab et j'y arrive pas.
je pense faire une boucle while... loop. a la fin de la procedure, je dois ouvrir le fichier, ca e pense que j'y arriverai et l'imprimer en option.
si tu pouvais m'aider, je te serais tres reconnaissant.
Laurent

Répondre à laurenttls

14

pom, le 17 jun 2005 à 14:44:26

Salut Laurent, si je t'ai bien compris, tu veux afficher toutes les frequences comprises entre f1 et f2 par un certain pas.

1e idee :
1) tu te crees une matrice A a 3 colonnes qui contient toutes les valeurs desirees
2) tu fais ensuite :

diary mon_fichier.txt
disp('NUMBER FREQUENCY VALUES')
A
diary off

2e idee

tu te crees trois vecteurs v1, v2 et v3 qui contiennent respectivement les numbers, frequency et values puis tu peux faire

diary mon_fichier.txt
disp('NUMBER FREQUENCY VALUES')
for i=1:length(v1)
fprintf('%5.5g','\t','%5.5g','\t','%5.5g','\n',v1(i),v2(i),v­3(i))
end

diary off

voila, j'espere que ca t'aide...

Répondre à pom

13

laurenttls, le 17 jun 2005 à 13:37:42

Pom...
je voudrais juste savoir la presentation, comment faire...
Merci

Répondre à laurenttls

15

laurenttls, le 17 jun 2005 à 17:11:45

Merci a toi encore une fois. j'ai commence a taper un peu pour voir comment ca s'affiche une matrice.
j'ai encore des problemes.
voila mon code:

a=get(handles.edit14,'String')
b='.txt'
d=strcat(a,b)
diary (d)
fprintf('f1=%5.3f','\t','f2=%5.3f','\t','\n',f1,f2)
disp('NUMBER FREQUENCY VALUE')
diary off

les 4ere lignes sont pour concatener un mot et .txt pour demander le nom de mon fichier et le cree.
mon fprintf, j'ai un soucis a partir de la. la frequence f1 et f2 ne sont pas les bonnes, et ca s'affichent plusisuer fois sur la meme ligne. ensuite number, frequency et value s'affiche a la suite....
je reflechis ce WE sur la matrice "A". je reviens lundi. je te tiens au courant.
merci encore
Laurent

Répondre à laurenttls

16

laurent, le 20 jun 2005 à 10:32:06

Salut pom
c bon en fait, ca s'affiche. enfin juste les premieres lignes, je n'ai pas encore trouve comment faire les vecteurs ni la matrice. je potasse. par contre, en tete de page je mets des valeurs de reference. sais tu comment les placer sur la meme ligne.
par exemple, je veux afficher:
frequence1= 900Hz. et il m'affcihe:
frequence1=
900Hz
as tu une idee pour ca?
et aussim peux tu m'expliquer un peu plus en details ton idee de vecteur ou de matrice.
merci
laurent

Répondre à laurent

17

pom, le 20 jun 2005 à 13:51:35

Salut Laurent,
tu veux afficher les fréquences et les valeurs correspndamntes. Ces valeurs sont donc bien stocker quelque part : dans un vecteur, dans un fichier, ou ailleurs.
Pour faire simple, supposons qu'elles soient stockées dans un vecteur F pour les fréquences et V pour les valeurs.
N est un vect
Tu vas donc te créer une matrice A a trois colonnes : 1e colonne le numéro, 2e colonne la fréquence et 3e colonne la valeur

A=zeros(length(F),3); % matrice a length(F) lignes et 3 colonnes ne contenant que des 0 (cf help zeros)

A(:,1)=1:length(F);

for i=1:length(F) % boucle sur les lignes
A(i,2)=F(i);
A(i,3)=V(i);
end

voilà ta matrice A est construite


tu veux afficher sur une même ligne les valeurs de référence. Utilise soit un fprintf soit un vecteur

vecteur :
[fréquence1 frequence2 frequance3]

fprintf :
v1=1:5;
v2=6:10;
for i=1:5,
fprintf('%3.3g \t %3.3g \n',v1(i),v2(i)),
end

regarde la doc fprintf et sprintf pour mieux comprendre.

Salut, et bon courage

Répondre à pom

18

laurent, le 20 jun 2005 à 14:08:04

Grand merci a toi.
pratiquement tout marche: l'affcihage sur une ligne, les frequences...
mais j'ai un dernier probleme: la boucle fait trois tours et apres elle s'arrete. je continue de chercher pourquoi mais si t'a une idee?
je pensais que comme j'attends des reponses d'une machine, elle reponds pas assez vite, peut etre un probleme de vitesse, ou de synchronisation. j'ai mis des pause, mais ca marche tjs pas.
connais tu pourquoi ou d'ou vient l'erreur?
laurent

Répondre à laurent

19

pom, le 20 jun 2005 à 14:33:02

Salut,
quelle est ta boucle ?
Affiche les valeurs du compteur (le fameux " i ") et regarde quand est-ce qu'il s'arrête.

Répondre à pom

20

laurenttls, le 20 jun 2005 à 15:32:08

C bon, c moi qui est mal tape la boucle, il fallait des ":" et pas des virgules. mais je comprends pas un truc.
quand je demande d'afficher sous matlab, c nikel, il m'affiche avec les bonnes colonnes, bien alignes. par contre apres, auqnd j'ouvre le .txt, il m'affcihe ca sur deux lignes completement decales...
qund j'imprime sou matlab, pas de pb au niveau de l'affichage et pb si j'imprime le .txt. connais tu le probleme?
le premier programme est bientot termine, et ceci beaucoup grace a toi. je te remercie pour cela
Laurent

Répondre à laurenttls

21

pom, le 20 jun 2005 à 16:12:10

Re-salut, non je ne sais pas.
Est-ce un pb de mise en page (cf les marges de ta feuille) ?

Là, je n'en sais rien.

Bonne continuation.

Pom

Répondre à pom

22

laurenttls, le 20 jun 2005 à 16:21:43

Je ne sais, je vois vraiment pas, j'ai essaye de mettre des tab, des trucs pour reperer la marge. rien. bref, c pas grave pour ca
par contre, est ce que tu connais la commande pour imprimer?
j'ai lu la fonction print.
je mis print file_name
et il veut pas m'imprimer. je ne sais pas si c parce que l'imprimante est en reseau ou c un autre probleme.
Laurent

Répondre à laurenttls

23

pom, le 21 jun 2005 à 09:37:31

Salut, non je ne sais pas. Ne peux-tu pas imprimer sans passer par Matlab ? Tu peux ouvrir un shell et faire lpr non ?

Répondre à pom

25

laurenttls, le 28 jun 2005 à 16:18:47

Salut pom. j'ai encore des petits problemes avec matlab. je voudrais choisir une frequence et un timer, par exemple 2secondes. et a cette frequence, je veux obtenir une valeur tous les 2 secondes puisque la valeur change en fonction du temps..... j'ai fait une boucle et g mis une pause(2) mais ca arrete le programme pdt 2 secondes, et j'arrive pas faire ce que je voudrais.
ce me met tjs la meme valeur. je ne sais pas si c la pause qui ne va pas, ou si c mon appareil de mesure...besoin de ton aide
Laurent

Répondre à laurenttls

26

Kermitt31, le 28 jun 2005 à 16:48:44

Pourquoi tu utilises pas une commande du genre cputime ou (tic et toc) ou clock qui te permettent de recuperer des temps.. et en comparant le temps que tu recuperes a chaque avec celui que tu recuperes au debut, tu peux savoir combiend e temps il s'est ecoulé... Proverbe Lapon:Girafe au pôl' Nord,
Eté de la mort.

Répondre à Kermitt31

27

laurenttls, le 30 jun 2005 à 11:26:59

Salut Kermitt31
j'ai compris ce que tu m'a dit. maintenant comment je fais pour utiliser ce temps?
tu connais "wait". j'ai lu le help, mais je ne comprend pas comment ca marche....
peux tu m'aider
laurent

Répondre à laurenttls

28

laurenttls, le 30 jun 2005 à 11:56:42

C'est bon, j'ai pu exploiter le temps. mercia toi. j'ai utiliser tic toc....
bref, un dernier service. je dois affciher une grille. je rentre X et Y et un point doit apparaitre, ca pas de probleme. mais apres je dois choisir par exemple, droite, gauche, haut, bas, et une vitesse de deplacement. et bien sur le point doit bouger, temps reel si possible sinon c pas un probleme. sais tu comment faire ca? merci
Laurent

Répondre à laurenttls

29

Kermitt31, le 30 jun 2005 à 14:10:26

--been visiblement c'est juste une acquisition (haut bas gauche droite) au clavier pour savoir dans quel sens bouger le point et apres des maths (tu recalcules les coordonnées de ton nouveau point) et enfin un plot !
Proverbe Lapon:Girafe au pôl' Nord,
Eté de la mort.

Répondre à Kermitt31

24

laurenttls, le 21 jun 2005 à 10:27:27

Je travaille sous windows ici.
tant pis pour l'imprimante, en fait, comme j'utilise une interface objet, je voulais mettre une option pour imprimer.
merci a toi en tout cas.
Laurent

Répondre à laurenttls

30

En_retard, le 8 aoû 2008 à 21:38:45

Pour ceux qui sont toujours intéressés à tourner le texte, il faut utiliser l'option 'Rotation'.
Ex.
ylabel('Titre','Rotation',0);
Comme ça, le texte est tourné de zéro degrés.

Répondre à En_retard

31

 en_avance, le 4 sep 2008 à 12:18:36

OK merci
mais alors comment faire pour mettre en exposant (ou en indice) non pas dans un title mais dans un 'static text' lorsqu'on utilise le GUI Matlab.

Merci d'avance.

Répondre à en_avance