Courbes Matlab
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Courbes Matlab



  1. #1
    invite3b879c03

    Courbes Matlab


    ------

    Bonjour,

    je voudrais tracer une courbe T=f(h) sous matlab avec T=T0 - a*h. Cette courbe je veux que lorsque h appartient à un intervalle spécifique je veux que le coefficient a change lorsque h est compris entre telle et telle valeur. Je veux également avoir sur le meme graphique toutes ces courbes bout à bout. Je voudrais obtenir cette courbe en fait pour être plus précis: http://www.rfi.fr/actufr/images/107/..._ozone_432.gif

    Voici mon code qui reste expérimental (je débute sous Matlab):

    function[T] =myode(h)
    T0=288.16;
    if h>=0 && h<=11000
    a=-0.0065;
    elseif h>11000 && h<=20000
    a=0.0;
    elseif h>20000 && h<=32000
    a=1.0;
    elseif h>32000 && h<=47000
    a=2.8;
    elseif h>47000 && h<=51000
    a=0.0;
    elseif h>51000 && h<=71000
    a=-2.8;
    elseif h>71000 && h<=86000
    a=-2.0;
    end
    T=T0-a*h;
    plot(T,h);
    hold on
    end

    Merci pour votre aide.

    -----

  2. #2
    invitea29b3af3

    Re : Courbes Matlab

    Salut

    Tu as écrit la fonction, il ne reste plus qu'à l'utiliser. Par exemple en affichant la valeur de T pour des h entre 0 et 86000. Tu pourrais faire ça pour h=0, h=1, h=2, ... mais c'est inutile, ça fait beaucoup trop de points, tu peux par exemple y aller par pas de 100: h=0, h=100, h=200, ... , h=86000
    Code:
    figure, hold on;
    for h=0:100:86000
        myode(h);
    end
    Par contre si tu fais ça (essaie), tu verras que tu n'obitendras pas la courbe que tu voulais, mais là ce n'est plus un problème avec Matlab, mais avec tes équations de segments de droite.

  3. #3
    invite3b879c03

    Re : Courbes Matlab

    Ce que tu m'a donné je le met dans la fonction ?

    Pourtant ca m'affiche ca dans la commande

    Error using myode (line 3)
    Not enough input arguments.

  4. #4
    invitea29b3af3

    Re : Courbes Matlab

    non non tu le mets pas dans la fonction. Tu sauves ta fonction telle quelle dans un fichier myode.m.
    Puis sois tu appelles cette fonction directement de la fenetre de commande Matlab, soit tu te crées un script (un simple fichier .m) avec juste ces 4 lignes et tu l'exécute (Debug-->Run, ou simplement l'icone avec la flèche verte, ou encore plus simplement F5 si t'es sur windows).

  5. A voir en vidéo sur Futura
  6. #5
    invite3b879c03

    Re : Courbes Matlab

    Est ce qu'il existe une expression qui me récupère la dernière valeur T(h) de la courbe d'avant. Effectivement j'ai des courbes mais je ne vois a quoi cela correspond.

  7. #6
    invitea29b3af3

    Re : Courbes Matlab

    Oui. Histoire de coder un peu plus proprement:
    Code:
    altitudes = 0:100:86000; % les altitudes à afficher: 0, 100, 200, ..., 86000
    T = zeros(size(altitudes)); % leur T équivalent, pour tous initialisés à zero
    figure, hold on;
    for i=1:numel(altitudes)
        h = altitudes(i);
        T(i) = myode(h);
    end

  8. #7
    invite3b879c03

    Re : Courbes Matlab

    Par exemple récupérer la valeur T(11000). est ce possible?

  9. #8
    invite3b879c03

    Re : Courbes Matlab

    Oula je ne comprend plus grand chose là. Mon expression mathématique est fausse. En fait il faudrais que toutes ces courbes se rejoignent en fait. Je dois rajouter un offset dans mon expression mathématique.

  10. #9
    invite3b879c03

    Re : Courbes Matlab

    En fait l'expression plus exact serait

    Tm=Tm,b + Am,b *(h-hb)

    avec b variant de 0à6 (correspondant au segment de courbe)
    Je connais T0, A0, h0 et après les A1, A2....,A6 c'est les coefficient que j'ai rentré dans mes conditions IF.

    C'est récurrent donc je vois pas comment faire ca.

  11. #10
    invitea29b3af3

    Re : Courbes Matlab

    Etant donné que ta courbe complète est un ensemble de segments, à mon avis la façon la plus simple de faire ça c'est de d'afficher segment par segment, et donc de faire une fonction qui plot 1 segment, puis de l'appeler N fois pour les N segments.

    1. Créer une fonction qui prend en entrée:
    1.a) les paramètres du segment d'un segment (pente, offset)
    2.a) un vecteur avec les valeur de h dans ce segment
    Donc par exemple, dans un fichier plotSegment.m :
    Code:
    function [] = plotSegment(h, Tmb, Amb, hb) %ici h est un vecteur, genre 11000:100:20000
    Tm=Tmb + Amb *(h-hb);
    plot(Tm,h)
    2. Dans un autre fichier .m :
    Code:
    figure, hold on;
    plotSegment(0:100:11000, Tmb1, Amb1, hb1)
    plotSegment(11000:100:20000, Tmb2, Amb2, hb2)
    etc.

Discussions similaires

  1. Courbes de poursuites / Courbes du chien
    Par invitee2c5607a dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 15/11/2010, 00h11
  2. Matlab - Comparaison de deux courbes
    Par invite1038f851 dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 27/07/2010, 18h56
  3. Erreur de deux courbes sous Matlab
    Par invite111cf9ee dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 25/07/2010, 23h38
  4. [matlab] intersection deux courbes
    Par invite40bb6564 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 16/06/2008, 19h07
  5. Traitement de courbes sous matlab : detection de pics
    Par invite4e70d34b dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 04/10/2007, 18h24