IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

[plot] Problème de compréhension d'un code qui dessine un cercle


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut [plot] Problème de compréhension d'un code qui dessine un cercle
    Bonjour tout le monde,

    Devant porter une application Matlab en .Net. et n'y comprenant absolument rien au langage de Matlab je viens vous demander votre aide

    Dans le code Matlab, j'ai une fonction qui est sensé dessiner un cercle, (en fait 2 mais soit). Pour ce faire le codeur Matlab a utilisé une fonction plot, qui prend en arguments un x et un y, et d'autre dont je ne comprend pas la signification même avec l'aide de matlab. De plus pour dessiner un cercle, il me semble qu'en plus du x et y nécessaire il faudrait au moins un rayon, un diamètre, ou un autre point pour pouvoir le dessiner, mais dans cette instruction plot rien n'est mit comme étant un rayon ou autres ...

    est-ce que quelqu'un peut m'éclairer à débroussailler ce code?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function r = graf(sigma, AVAM, axeshandle, varargin)
     
    colorflag = 0; r = 0;
    if ( isempty(varargin) == 0 )
        colorflag = varargin{1};
        color = varargin{2};
    end
     
    if ( colorflag )
        plot(real(AVAM), imag(AVAM), color,'Parent',axeshandle);
        return
    end
     
    plot(real(AVAM), imag(AVAM), 'm*','Parent',axeshandle);    
    %title('Autovalores do Sistema','Parent',axeshandle);
    %legend('Autovalores do Matlab','Parent',axeshandle);
     
    Z = size(AVAM);
    r = abs(sigma - AVAM(Z(1)));
     
    ReSigma = real(sigma);
    ImagSigma = imag(sigma);
     
    theta = linspace(0,2*pi,100);           % create vector theta
    x = r*cos(theta);                       % generate x-coordinate
    y = r*sin(theta);                       % generate y-coordinate
    plot(ReSigma, ImagSigma, 'ro','Parent',axeshandle);         % plor o centro do circulo (sigma)
     
    fill(x+ReSigma,y+ImagSigma, [0 0 1] , 'FaceAlpha', 0.1, 'EdgeAlpha' , 0);
    %...no filled cercle
    %plot(x+ReSigma,y+ImagSigma,'r','Parent',axeshandle);        % plot circle
     
    drawnow;

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Allons.. un peu de géométrie élémentaire : http://fr.wikipedia.org/wiki/Cercle#.C3.89quations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    theta = linspace(0,2*pi,100);           % create vector theta
    x = r*cos(theta);                       % generate x-coordinate
    y = r*sin(theta);                       % generate y-coordinate

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut
    Même si je suis méga nul en math géo trigonométrié, ect... j'avais vus qu'il calculait son X Y, et le rayon... mais il utilise dans la fonction plot que le X et Y... alors comment est-ce que matlab fait pour savoir quel est ce rayon si justement on lui donne pas????

    Un autre truc bizare... dans l'aide de matlab, tout ce que je vois sur plot : c'est dessine la ligne.

    euuh une ligne est un cercle???


  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    La fonction PLOT ne fait que tracer des point d'après l'expression de leurs coordonnées cartésiennes et, facultativement, les relie par des segments de droite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    x=rand(1,3);
    y=x;
     
    figure
    subplot(2,1,1);
    plot(x,y,'r+');
     
    subplot(2,1,2);
    plot(x,y,'r+-')
    Peut-être que je ne comprends pas bien ta question

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut
    Pourtant ca me semble clair..Comment fait plot pour dessiner un cercle si on ne lui donne qu'une seule coordonnée

    Le 'r+-' correspond à quoi???

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par breezer911
    une ligne est un cercle
    Un segment est une ligne, une droite est une ligne, une courbe est une ligne, un cercle est une ligne etc... il suffit de regarder les lignes de sa propre main

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut
    Citation Envoyé par Dutmatlab
    Un segment est une ligne, une droite est une ligne, une courbe est une ligne, un cercle est une ligne etc...
    Mué je dois confondre avec la droite moi

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par breezer911
    Comment fait plot pour dessiner un cercle si on ne lui donne qu'une seule coordonnée
    euhh regardes bien x et y sont des vecteurs de coordonnées.
    Citation Envoyé par breezer911
    Le 'r+-' correspond à quoi???
    Dans l'aide on peut lire:
    Various line types, plot symbols and colors may be obtained with
    PLOT(X,Y,S) where S is a character string made from one element
    from any or all the following 3 columns:

    b blue . point - solid
    g green o circle : dotted
    r red x x-mark -. dashdot
    c cyan + plus -- dashed
    m magenta * star
    y yellow s square
    k black d diamond
    v triangle (down)
    ^ triangle (up)
    < triangle (left)
    > triangle (right)
    p pentagram
    h hexagram

    For example, PLOT(X,Y,'c+:') plots a cyan dotted line with a plus
    at each data point; PLOT(X,Y,'bd') plots blue diamond at each data
    point but does not draw any line.

  9. #9
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut
    aaaah d'accord, j'avais pas vu ca en fait que theta est un vecteur. Donc en fait on balance a la fonction plot une 100aines de points si je lis bien ?

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut

  11. #11
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut
    Mais lorsqu'il dessine le petit cercle donc la fonction plot et pas fill, la il utilise un complex. C'est pas un vecteur dans ce cas, donc ici aussi se pose mon problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 24/09/2011, 17h07
  2. un probléme dans un code qui m'a géné
    Par jack_1981 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/01/2008, 17h53
  3. problème de compréhension de code
    Par condor_01 dans le forum C
    Réponses: 5
    Dernier message: 26/09/2007, 12h17
  4. Petit problème de compréhension d'une ligne de code
    Par totoc1001 dans le forum Images
    Réponses: 3
    Dernier message: 12/03/2007, 21h44
  5. code qui pose problème
    Par onePersonne dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/10/2006, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo