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 :

trouver les ordonnées de 2 courbes pour une même abscisse


Sujet :

MATLAB

  1. #1
    Invité
    Invité(e)
    Par défaut trouver les ordonnées de 2 courbes pour une même abscisse
    Bjr à tous,
    J'ai un petit soucis pour extraire les données de plusieurs courbes.
    J'ai importé(fichiers en .dat) et tracé sur un même graphique deux courbes ayant des abscisses différentes et un nombre de point différents.
    Je voudrais maintenant récupérer, dans mon nouveau repère, les ordonnées des courbes en imposant les abscisses. L'idée est d'utiliser une boucle et de parcourir les abscisses (en fixant un pas) et de stocker les 2 ordonnées.
    Quelqu'un peut-il m'aiguiller. Merci

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    pas tout compris, mais je pense que tu devrais regarder du côté de l'interpolation :
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bjr,
    merci pour l'idée, mais j'ai déjà regardé cette fonction.
    J'essaye de stocker dans une matrice ou tableau, les valeurs des ordonnées des deux courbes en parcourant plusieurs valeurs des abscisses.
    exemple: pour x=0, 1, 2 à 10, trouver les valeurs de y pour la courbe 1 et les valeurs de y pour la courbe 2. Pour être clair, j'ai besoin de recaler mes 2 courbes importées sur un axe x commun.
    Merci par avance.

  4. #4
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Bonjour,

    Si tu ne dois faire qu'afficher les courbes sur un même graphique, tu n'as pas besoin de recaler tes abcisses.

    Si par contre tu dois faire cela dans une optique d'analyse par la suite, alors voici ce que je pourrais te conseiller pour l'une de tes courbes (tu fais la même chose pour la deuxième courbe).

    - Premièrement, si cela n'est pas déjà le cas, tu ordonnes tes points par abscisses croissantes.
    - Ensuite, tu parcours tes abscisses l'une après l'autre en partant du plus petit. Si l'abscisse courante est plus grande que celle que tu recherches, alors tu prends l'abscisse courante ainsi que celle d'avant (si elle existe) et celle d'après (si elle existe). Tu prends également les ordonnées correspondantes. Puis tu fais une interpolation sur ces points uniquement, cela devrait largement suffire. Tu obtiens un polynôme de l'ordre du nombre de points sélectionnés moins 1. Tu prends la valeur de ce polynôme à l'abscisse qui t'intéresse : c'est la valeur qui t'intéresse pour cette courbe à l'abscisse voulue.

    Montre nous ce que tu as déjà fait, et dis nous plus précisément là où ça coince.

    Cordialement,
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  5. #5
    Invité
    Invité(e)
    Par défaut
    bonjour, voici le début de mon programme:

    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
    clear all
    [A]=xlsread('other00.xls','other');
    [B]=xlsread('other11.xls','other');
     
    colonne1A = A(:,1); 
    colonne2A = A(:,2);
    colonne1B = B(:,1); 
    colonne2B = B(:,2);
     
    hold on;
    plot (colonne1A, colonne2A,'r');
    plot (colonne1B, colonne2B,'b');
     
    ordonneesYcourberouge = get(findobj('color','r'),'YData')
    abscisseX = get(findobj('color','r'),'XData')
    N'ayant pas le même nombre de points en abscisse dans mes fichiers Excel, l'idée est de recréer un tableau avec dans la 1er colonne des valeurs de X lues sur le graphe obtenu par 'plot' puis dans la 2eme les valeurs de Y de la courbe rouge puis une 3eme pour les y de la courbes bleu.
    Merci pour vos avis.
    Dernière modification par Invité ; 11/09/2012 à 16h18. Motif: Ajout des balises [code] ... [/code]

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Je ne comprends toujours pas ce que tu cherches à faire...

    A quoi servent les 2 dernières lignes? ordonneesYcourberouge sera égal à colonne1A et abscisseX sera égal à colonne2A...

    Peux-tu nous expliquer en prenant un jeu de données comme exemple (ou bien même en nous donnant les données de tes 2 courbes). Une figure, ça pourrait peut-être aider aussi.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Invité
    Invité(e)
    Par défaut
    bonsoir Magelan,

    Je vais essayer de faire simple. J'ai 2 fichiers en .DAT (ou xls) contenant des données en X et en Y. Ces 2 fichiers non pas le même nbre de points. Mon idée est de tracer ces données sous matlab sur un même graphique. J'oublie mes fichiers DAT et je cherche a extraire du graphique matlab, les valeurs des ordonnées des 2 courbes en fonction de l'axe X, j'aurai ainsi le même nbre de valeurs de Y. Au final, je veux, pour un x donné, calculer la moyenne des 2 valeurs de Y correspondantes pour retracer une courbe moyenne.
    Je pensais utiliser une boucle pour parcourir les valeurs de X et stocker les 2 valeurs de Y.
    Merci pour ton aide.

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par azul73 Voir le message
    J'oublie mes fichiers DAT et je cherche a extraire du graphique matlab, les valeurs des ordonnées des 2 courbes en fonction de l'axe X, j'aurai ainsi le même nbre de valeurs de Y.
    Non, comme je l'ai écrits plus haut, tu obtiendras exactement les mêmes points que ceux que tu as utilisé dans le plot (il te suffit de comparer les valeurs contenues dans ordonneesYcourberouge et dans colonne2A pour t'en convaincre). Lors de l'affichage le plot relie tes points par des segments de droite et je ne suis même sûr que tu puisses les récupérer (et ce ne serait de toute manière pas la bonne méthode).

    Donc si j'ai bien compris, je te conseille de re-regarder la fonction interp1 qui devrait répondre à tes besoins : tu définis tes abscisses et tu interpoles les deux séries de données par rapport à ces abscisses et tu pourras calculer ta moyenne.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Ok, je vais tester cette fonction.
    Merci pour tes conseils.

Discussions similaires

  1. Réponses: 17
    Dernier message: 09/02/2010, 16h22
  2. Réponses: 5
    Dernier message: 11/09/2006, 17h29
  3. Réponses: 15
    Dernier message: 19/06/2006, 19h25
  4. [RegEx] Trouver les appels statique et dynamique d'une class
    Par jeff_! dans le forum Langage
    Réponses: 8
    Dernier message: 07/04/2006, 16h31

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