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 :

La courbe ne veut pas se dessiner


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut La courbe ne veut pas se dessiner
    Bonjour,

    Je suis encore un débutant à Matlab et je n'arrive pas à comprendre pourquoi dans mon dessin, je n'obtiens rien alors que je devrais avoir deux courbes.

    Voici mon code (je m'excuse de la longueur de l'expression de u) :

    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
    R = 4;
    k = 1;
    n = 4;
    a = input ('Entrez la position de la sphère selon axe des x : ');
    b = input ('Entrez la position de la sphère selon axe des y : ');
    c = input ('Entrez la position de la sphère selon axe des z : ');
    u = [ ];
    for (i = 1:length(v))
        u(i) = (-(2*a*(cos(v(i))) + 2*b*(sin(v(i))) + 2*k*c*(cos(n*v(i)))) - sqrt ((2*a*(cos(v(i))) + 2*b*(sin(v(i))) + 2*k*c*(cos(n*v(i))))^2 - 4*(1 + (k*(cos(n*v(i))))^2)*(a^2 + b^2 + c^2 - R^2))) / (2*(1 + (k*(cos(n*v(i))))^2));
    end
    x = u(i).*(cos(v(i)));
    y = u(i).*(sin(v(i)));
    z = k*u(i).*(cos(n*v(i)));
    plot3 (x,y,z)
    hold on
     
    for(i = 1:length(v))
        u(i) = (-(2*a*(cos(v(i))) + 2*b*(sin(v(i))) + 2*k*c*(cos(n*v(i)))) + sqrt ((2*a*(cos(v(i))) + 2*b*(sin(v(i))) + 2*k*c*(cos(n*v(i))))^2 - 4*(1 + (k*(cos(n*v(i))))^2)*(a^2 + b^2 + c^2 - R^2))) / (2*(1 + (k*(cos(n*v(i))))^2));
    end
    x = u(i).*(cos(v(i)));
    y = u(i).*(sin(v(i)));
    z = k*u(i).*(cos(n*v(i)));
    plot3 (x,y,z)

    Ai-je fait une grossière erreur dans mes plot ? ou bien n'ai-je pas bien compris l'utilisation du for ? ou ...
    J'ai également une petite question sur la division. Je n'arrive pas à savoir laquelle je dois mettre.

    Je vous remercie d'avance de vos éclaircissements car je souhaite savoir bien utiliser Matlab .

    Yawgmoth

  2. #2
    Membre émérite
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Par défaut
    Bonjour,
    les x,y et z dans la fonction plot sont des scalaires:
    x = u(i).*(cos(v(i)));
    y = u(i).*(sin(v(i)));
    z = k*u(i).*(cos(n*v(i)));
    en fait, il faut enlever le "i", donc c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    x = u.*(cos(v));
    y = u.*(sin(v));
    z = k*u.*(cos(n*v));
    PS: il faut mieux d'éviter les boucles, tu peux faire simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    u = (-(2*a*(cos(v)) + 2*b*(sin(v)) + 2*k*c*(cos(n*v))) - ...............

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut
    Merci beaucoup pour les (i) et le conseil.
    Mais si je ne mets pas de boucle for, comment je vais faire pour obtenir une courbe ?
    J'ai fait les changements mais il ne me dessine toujours rien du tout, aurais-je mal compris ce que tu m'as suggéré ?

    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
    R = 4;
    k = 1;
    n = 4;
    a = input ('Entrez la position de la sphère selon axe des x : ');
    b = input ('Entrez la position de la sphère selon axe des y : ');
    c = input ('Entrez la position de la sphère selon axe des z : ');
    v = [ ];
     
    u = (-(2*a*(cos(v)) + 2*b*(sin(v)) + 2*k*c*(cos(n*v))) - sqrt ((2*a*(cos(v)) + 2*b*(sin(v)) + 2*k*c*(cos(n*v)))^2 - 4*(1 + (k*(cos(n*v)))^2)*(a^2 + b^2 + c^2 - R^2))) / (2*(1 + (k*(cos(n*v)))^2));
     
    x = u.*(cos(v));
    y = u.*(sin(v));
    z = k*u.*(cos(n*v));
    plot3 (x,y,z)
    hold on
     
    u = (-(2*a*(cos(v)) + 2*b*(sin(v)) + 2*k*c*(cos(n*v))) + sqrt ((2*a*(cos(v)) + 2*b*(sin(v)) + 2*k*c*(cos(n*v)))^2 - 4*(1 + (k*(cos(n*v)))^2)*(a^2 + b^2 + c^2 - R^2))) / (2*(1 + (k*(cos(n*v)))^2));
     
    x = u.*(cos(v));
    y = u.*(sin(v));
    z = k*u.*(cos(n*v));
    plot3 (x,y,z)

  4. #4
    Membre émérite
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Par défaut
    Oui, le probleme est là:
    et aussi n'oublie pas de mettre "." avant les les puissance "^" et les divisions "/" où il y a des vecteurs.

  5. #5
    Membre expérimenté Avatar de LordPeterPan2
    Inscrit en
    Février 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 247
    Par défaut
    C'est normal comme v est la matrice vide cos(v) est également la matrice vide, en gros tout tes calculs sont égaux à [] donc focément ploter le vide c'est invisible

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut
    Mais je dois mettre quoi dans ces crochets alors ?

  7. #7
    Membre émérite
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Par défaut
    Que représentent v,u,k,n,.....?? et que veux-tu faire exactement ??

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

Discussions similaires

  1. Application qui ne veut pas dessiner
    Par Invité dans le forum Qt
    Réponses: 10
    Dernier message: 11/04/2010, 12h02
  2. Ma fenêtre OpenGL ne veut pas rester ouverte
    Par Mynautor dans le forum OpenGL
    Réponses: 3
    Dernier message: 03/02/2005, 13h25
  3. [HARDWARE] le lecteur CD ne veut pas s'ejecter
    Par Petogaz dans le forum Périphériques
    Réponses: 4
    Dernier message: 15/12/2004, 10h21
  4. java web start qui veut pas se lancer
    Par calvin dans le forum JWS
    Réponses: 4
    Dernier message: 30/06/2004, 11h42
  5. [Kylix] Un programme compilé ne veut pas se lancer
    Par LightBeam dans le forum EDI
    Réponses: 1
    Dernier message: 05/08/2003, 10h15

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