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 :

Tracer une surface de réponse triangulaire


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Tracer une surface de réponse triangulaire
    Bonjour à tous,

    J'ai effectué un plan de mélange à ternaire. Je souhaite le résoudre sur Matlab puisque j'ai l'habitude de calculer d'autre plans à surface de réponse avec ce logiciel(Box Behnken notamment) . Le calcul des coefficients semble bon, mais je souhaite tracer la surface qui en découle. Cette surface est de ce type : http://static.xlstat.com/uploads/ass...oemix9f_fr.gif

    Le problème est que je ne connait pas de fonction Matlab permettant de tracer une surface avec 3 axes sur le meme plan. Je serait surpris que Matlab ne puisse pas le faire.

    Pouvez-vous m'aider?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Sous quelle forme sont stockées les valeurs permettant de tracer un tel graphique ?
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et 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
    Merci dut pour ton intérêt à ce problème.

    Mon calcul me donne les coefficients (b) d'un modèle de second degré:
    y= b1*X1 + b2*X2 + b3*X3 + b12*X1*X2 + b13*X1*X3 + b23*X2*X3

    avec X1, X2 et X3 l'abondance de chaque constituants (variant donc de 0 a 1 avec X1+X2+X3 = 1) a représenter sur mes trois axes.

    Pour une surface à deux facteurs, je fait varier X1 et X2 de 0 à 1 avec un pas de 0.1 (avec la fonction meshgrid) et je calcule pour chaque case de la matrice la réponse du modèle. Ensuite j'utilise la fonction surf pour la représentation sous forme de surface. Ce n'est plus aussi simple pour le problème actuel.

    Je peut donc stocker mes données un peu comme je le veut, du moment que je sais ce dont à besoin la fonction permettant le traçage d'un tel graphique.

    Merci,

  4. #4
    Rédacteur/Modérateur

    Pourrais-tu nous fournir des valeurs pour b ?

    Sinon, ceci serait-il un début de solution ?

    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
    % coordonnees barycentriques
    [u,v] = meshgrid(0:0.01:1);
    w = 1-u-v;
     
    % Uniquement w > 0
    idx = w(<img src="images/smilies/icon_smile.gif" border="0" alt="" title=":)" class="inlineimg" />>-1E-5;
     
    u = u(idx);
    v = v(idx);
    w = w(idx);
     
    % Equation
    b = rand(1,6);
    Y = b(1)*u + b(2)*v + b(3)*w + b(4)*u.*v + b(5)*u.*w + b(6)*v.*w;
     
    % Coord barycentriques => coord cartesiennes
    x = u./(u+v+w);
    y = v./(u+v+w);
     
    figure
    scatter(x,y,10,Y,'filled','s')
    axis equal


    Avec les valeurs réelle de b, l'allure du graphique est-elle conforme à celle donnée avec un autre logiciel ?

    [Edit] Cette contribution pourra sans doute être utile : Ternplot by Carl Sandrock
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et 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)