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 :

graphique 3D. relier certains points de ce graphe


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut graphique 3D. relier certains points de ce graphe
    Bonjour à tous,

    je suis débutant en Matlab et je rédige actuellement un article. Je dois illustrer ce dernier par divers graphiques.

    J'ai réalisé un premier graphique en 3D. Cependant, sur ce graphique, j'aimerais dessiner une nouvelle courbe en 3D qui passe par certains points.
    Voilà les fonctions pour mon graphique (j'aurais probablement pu faire plus simple mais ne vous souciez pas trop de mes notations ;-))

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    z=inline('(40*sqrt(1+0.9^2))/sqrt(L1^2+L2^2)','L1','L2')
    for i=1:14
        for j=1:14
            if i>=2*j
                m(i,j)=z(i,j)
                %else m(i,j)=0
            end
        end
    end
     
    hold on
     
    syms x y
    x=2*y
    ezplot(x,[1:20])
     
     
    z=inline('(20*sqrt(1+0.9^2))/sqrt(L1^2+L2^2)','L1','L2')
    for i=1:14
        for j=1:14
            if i<=j
                m(i,j)=z(i,j)
                % else m(i,j)=0
            end
        end
    end
     
     
    for i=2
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
    for i=4
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
    for i=6
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
    for i=8
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
    for i=10
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
    for i=12
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
    for i=14
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
     
    for i=3
        for (j=(i/2)+(1/2):(i-1))
            m(i,j)=m(i,(i/2-(1/2)))-(((m(i,(i/2-(1/2)))-m(i,i))/(i-(i/2-(1/2))))*(j-((i/2)-1/2)))
        end
    end
     
    for i=5
        for (j=(i/2)+(1/2):(i-1))
            m(i,j)=m(i,(i/2-(1/2)))-(((m(i,(i/2-(1/2)))-m(i,i))/(i-(i/2-(1/2))))*(j-((i/2)-1/2)))
        end
    end
     
    for i=7
        for (j=(i/2)+(1/2):(i-1))
            m(i,j)=m(i,(i/2-(1/2)))-(((m(i,(i/2-(1/2)))-m(i,i))/(i-(i/2-(1/2))))*(j-((i/2)-1/2)))
        end
    end
     
    for i=9
        for (j=(i/2)+(1/2):(i-1))
            m(i,j)=m(i,(i/2-(1/2)))-(((m(i,(i/2-(1/2)))-m(i,i))/(i-(i/2-(1/2))))*(j-((i/2)-1/2)))
        end
    end
     
    for i=11
        for (j=(i/2)+(1/2):(i-1))
            m(i,j)=m(i,(i/2-(1/2)))-(((m(i,(i/2-(1/2)))-m(i,i))/(i-(i/2-(1/2))))*(j-((i/2)-1/2)))
        end
    end
     
    for i=13
        for (j=(i/2)+(1/2):(i-1))
            m(i,j)=m(i,(i/2-(1/2)))-(((m(i,(i/2-(1/2)))-m(i,i))/(i-(i/2-(1/2))))*(j-((i/2)-1/2)))
        end
    end
     
    mesh(m)
     
    hold on
     
    syms x y
    x=y
    ezplot(x,[1:20])
    J'aimerais maintenant sur ce graphique relier les points (x,y)= (1,1),(2,2),(3,3), (4,4),etc. entre eux en fonction des valeurs z.


    En espérant que vous avez compris ma démarche un grand merci pour votre aide

  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 304
    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 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Est-il nécessaire d'utiliser la Symbolic Toolbox ici ?

    Le code n'est-il pas équivalent à :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    z=inline('(40*sqrt(1+0.9^2))/sqrt(L1^2+L2^2)','L1','L2')
    for i=1:14
        for j=1:14
            if i>=2*j
                m(i,j)=z(i,j)
                %else m(i,j)=0
            end
        end
    end
     
    hold on
     
    plot(1:20,2:2:40,'b-')
     
     
     
    z=inline('(20*sqrt(1+0.9^2))/sqrt(L1^2+L2^2)','L1','L2')
    for i=1:14
        for j=1:14
            if i<=j
                m(i,j)=z(i,j)
                % else m(i,j)=0
            end
        end
    end
     
     
    for i=2
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
    for i=4
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
    for i=6
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
    for i=8
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
    for i=10
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
    for i=12
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
    for i=14
        for (j=(i/2)+1:(i-1))
            m(i,j)= m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)))
        end
    end
     
     
    for i=3
        for (j=(i/2)+(1/2):(i-1))
            m(i,j)=m(i,(i/2-(1/2)))-(((m(i,(i/2-(1/2)))-m(i,i))/(i-(i/2-(1/2))))*(j-((i/2)-1/2)))
        end
    end
     
    for i=5
        for (j=(i/2)+(1/2):(i-1))
            m(i,j)=m(i,(i/2-(1/2)))-(((m(i,(i/2-(1/2)))-m(i,i))/(i-(i/2-(1/2))))*(j-((i/2)-1/2)))
        end
    end
     
    for i=7
        for (j=(i/2)+(1/2):(i-1))
            m(i,j)=m(i,(i/2-(1/2)))-(((m(i,(i/2-(1/2)))-m(i,i))/(i-(i/2-(1/2))))*(j-((i/2)-1/2)))
        end
    end
     
    for i=9
        for (j=(i/2)+(1/2):(i-1))
            m(i,j)=m(i,(i/2-(1/2)))-(((m(i,(i/2-(1/2)))-m(i,i))/(i-(i/2-(1/2))))*(j-((i/2)-1/2)))
        end
    end
     
    for i=11
        for (j=(i/2)+(1/2):(i-1))
            m(i,j)=m(i,(i/2-(1/2)))-(((m(i,(i/2-(1/2)))-m(i,i))/(i-(i/2-(1/2))))*(j-((i/2)-1/2)))
        end
    end
     
    for i=13
        for (j=(i/2)+(1/2):(i-1))
            m(i,j)=m(i,(i/2-(1/2)))-(((m(i,(i/2-(1/2)))-m(i,i))/(i-(i/2-(1/2))))*(j-((i/2)-1/2)))
        end
    end
     
    mesh(m)
     
    hold on
     
    plot(1:20,1:20,'b-')
    Sinon, pourrais-tu nous montrer un aperçu du graphique que tu comptes obtenir au final ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Oui en effet il n'est pas nécessaire d'utiliser la Symbolic.

    C'est difficile de montrer un aperçu du graphique. J'aimerais obtenir le graphique en 3D prédécemment défini. Et sur ce graphique rajouter une nouvelle droite (ou courbe ce serait encore mieux) qui relie les points (1,1), (2,2), (3,3), etc. J'aimerais donc redessiner une nouvelle courbe en 3D qui me donnerait les valeurs sur l'axe Z pour les points (1,1), (2,2), (3,3),etc.

    J'espère que tu vois où je veux en venir...

    Un tout grand merci

  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 304
    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 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Ton code peut déjà être grandement simplifié 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
    22
    m = zeros(14,14);
    [a,b] = meshgrid(1:14);
     
    z = inline('(A*sqrt(1+0.9^2))./sqrt(L1.^2+L2.^2)','L1','L2','A');
     
    idx = a(:)>=(2*b(:));
    m(idx) = z(a(idx),b(idx),40);
     
    idx = a(:)<=b(:);
    m(idx) = z(a(idx),b(idx),20);
     
    for i = 2:2:14
        for j = (i/2)+1:(i-1)
            m(i,j) = m(i,i/2)-(((m(i,i/2)-m(i,i))/(i-(i/2)))*(j-(i/2)));
        end
    end
     
    for i = 3:2:13
        for j = (i/2)+(1/2):(i-1)
            m(i,j) = m(i,(i/2-(1/2)))-(((m(i,(i/2-(1/2)))-m(i,i))/(i-(i/2-(1/2))))*(j-((i/2)-1/2)));
        end
    end

    Maintenant si j'ai bien compris, tu souhaites obtenir la projection de la droite y = x sur le maillage issu de m

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    n =20;
    ai = linspace(1,14,n);
    bi = ai;
    mi = interp2(a,b,m,ai,bi);
    Et pour afficher le tout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    figure
    hold on
    plot(1:20,.5:.5:10,'b-')
    plot(1:20,1:20,'b-')
    mesh(m,'facecolor','none','edgecolor','k')
    plot3(ai,bi,mi,'r-','linewidth',2)
    C'est l'idée...
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

Discussions similaires

  1. Représentation graphique: comment relier les points entre eux?
    Par jordane746 dans le forum ODS et reporting
    Réponses: 0
    Dernier message: 01/06/2014, 23h54
  2. VBA Relier certains points (avec coordonnées)
    Par ElodieR dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/04/2014, 18h29
  3. Relier les points d'une série graphique
    Par adelsunwind dans le forum IHM
    Réponses: 3
    Dernier message: 11/05/2013, 08h41
  4. graphique et relier les points
    Par shadow19c dans le forum R
    Réponses: 22
    Dernier message: 12/04/2011, 11h49
  5. [TP] Relier deux points ?
    Par wwwroom dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 28/06/2005, 19h04

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