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 :

relier des points par une courbe


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 48
    Points : 28
    Points
    28
    Par défaut relier des points par une courbe
    Bonjour,
    je voudrais dessiner une fonction avec Plot mais sa me donne des points répartis et j'aimerai les relier ; voici mon 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
     
    g=9.8;
    pas=0.02;
    z=0.8;
    Tc=sqrt(z/g);
    s=0.03;
    CI=[0.2,-0.791];
     
    for t=0:pas:0.4
        v=(CI(2)/Tc)*sinh(t/Tc)+CI(2)*cosh(t/Tc);
        E1=0.5*v^(2);
        E0=-(g/2*z)*CI(1);
        x=(z/g*s)*(E1-E0);
        figure(1)
        hold on
        plot(t,x,'r')
    end
    hold off

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur Photonique
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Photonique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Salut,

    Ce qui se passe c'est que le programme ne comprend pas que tes points sont "liés" entre eux.
    Tu crées un affichage pour chaque point. Matlab ne peut pas comprendre qu'il peut les lier, il les
    considère séparément. Le mieux est de créer le vecteur v et x et après seulement procéder à l'affichage.

    Comme ceci :
    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
    g=9.8;
    z=0.8;
    Tc=sqrt(z/g);
    CI=[0.2,-0.791];
     
    pas=0.02;
    t = 0:pas:0.4;
     
    for ii = 1:length(t)
        v(ii)=(CI(2)/Tc)*sinh(t(ii)/Tc)+CI(2)*cosh(t(ii)/Tc);
    end
     
    E0=-(g/2*z)*CI(1);
    E1=0.5*v.^(2);
     
    s=0.03;
    x=(z/g*s)*(E1-E0);
     
     
    figure(1)
    plot(t,x,'-r')

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Merci pour votre réponse, sa marche à merveille mais j'aimerai comprendre pourquoi sa marche dans un autre contexte, voici le 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
    clear all
    clc
    close all
    %Initialisation
    CI1=[-0.151,0.467];
    CI2=[-0.2,0.791];
    CI3=[0.2,-0.791];
    CI4=[0.151,-0.467];
     
    g=9.8;
    pas=0.02;
    z=0.8;
    Tc=sqrt(z/g);
    t=0:pas:0.8;
    %solution de l'equation dynamique du pendule inverse lieaire avec une hauteur z constante
    x1=CI1(1)*cosh(t/Tc)+Tc*CI1(2)*sinh(t/Tc);
    %v=(CI1(1)/Tc)*sinh(t/Tc)+CI1(2)*cosh(t/Tc);
     
    x2=CI2(1)*cosh(t/Tc)+Tc*CI2(2)*sinh(t/Tc);
    x3=CI3(1)*cosh(t/Tc)+Tc*CI3(2)*sinh(t/Tc);
    x4=CI4(1)*cosh(t/Tc)+Tc*CI4(2)*sinh(t/Tc);
     
    %Trace des grahes
    hold on,
    figure(1)
    subplot(2,2,1),plot(t,x1,'b'),title('simulation de la position x1'),grid;
    subplot(2,2,2),plot(t,x2,'b'),title('simulation de la position x2'),grid;
    subplot(2,2,3),plot(t,x3,'b'),title('simulation de la position x3'),grid;
    subplot(2,2,4),plot(t,x4,'b'),title('simulation de la position x4'),grid;
     
    hold off,

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur Photonique
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Photonique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Dans ma réponse j'ai voulu te laisser une boucle au cas où tu aurais d'autres variables plus tard qui nécessite une itération.
    Il fonctionne également en supprimant la boucle et en écrivant seulement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    v = (CI(2)/Tc)*sinh(t/Tc)+CI(2)*cosh(t/Tc);
    Dans ton 2e programme tu fonctionnes comme ma ligne de code: tu crées ton vecteur t
    puis calcule les vecteurs xi directement avec le vecteur t.
    Avec ton programme initiale tu formais des couples de scalaires.

    Donc une fois tes tableaux de valeurs formés, Matlab te trace les x et y en reliant les points appartenant au même tableau.

    Une remarque, si Tc ou CI étaient également des vecteurs, ils devraient avoir la même taille que t pour que Matlab puisse compiler (dans ton exemple tu prends seulement CI(ii) qui est un scalaire).

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

Discussions similaires

  1. Relier des points par des lignes
    Par mister-benoit dans le forum Général Java
    Réponses: 0
    Dernier message: 27/04/2015, 10h31
  2. Réponses: 0
    Dernier message: 27/03/2013, 02h57
  3. Relier des points dans une paintbox par une courbe
    Par Benjikos dans le forum Débuter
    Réponses: 4
    Dernier message: 19/08/2007, 13h06
  4. Réponses: 4
    Dernier message: 22/05/2007, 17h08

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