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 :

problème avec la fonction area


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 9
    Points : 6
    Points
    6
    Par défaut problème avec la fonction area
    Bonjour,

    je suis utilisateur de Matlab occasionnel, juste pour analyser quelques données de temps en temps, c'est à dire faire du fitting et des choses simples

    aujoud'hui, j'ai un soucis avec la fonction area

    j'ai un fichier de mesure toto.dat (2 dimensions - 2 colonnes ; n lignes))
    voici ce que je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    load F1Trace00000.dat
    [n,p] = size(F1Trace00000);
    plot(F1Trace00000(:,1),F1Trace00000(:,2)); figure(gcf)
    là je vérifie que ma courbe est ok

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    x = (F1Trace00000(:,1));  // extraction de ma colonne x
    y = (F1Trace00000(:,2));  // extraction de ma colonne y
    surface_y=area(y);  // me calcule la surface de la courbe
    ensuite je souhaite faire la meme chose, sauf que je souhaite borner y
    quelque chose du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    surfacey=area(y, limit inf[y], limit sup [y])
    gloablemement, ça ne marche pas, et j'ai besoin d'un petit coup de main

    merci d'avance

  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,

    pour essayer de préciser ta demande, est-ce que par exemple, si tu as la courbe suivante :

    tu définis 2 bornes inf et sup (ici les 2 traits rouges) et tu cherches l'aire en vert, c'est bien cela? Si je demande cela c'est pour savoir quelle précision tu désires obtenir, dans le cas que j'évoques, il faut tout d'abord calculer les points d'intersection entre la courbe initiale et les 2 bornes.(enfin perso, c'est le moyen le plus simple que je vois...)
    Images attachées Images attachées  
    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
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    C'est ça, sauf que les deux bornes, elles sont en x
    mais je cherche bien à calculer la surface verte, celle qui est bornée

    pour le choix des bornes, je regarde ma courbe avant avec un zoom et je définis mes points

    merci

  4. #4
    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 Minikisscool Voir le message
    C'est ça, sauf que les deux bornes, elles sont en x
    Donc du coup ce n'est pas la même chose (mais c'est plus facile)
    Tu cherches l'aire en jaune dans cette figure :


    Si oui, voici un petit code pour la calculer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    y = rand(1,20)*20;
    area(y);
    x = 1:20;
    x1 = 6.2;
    x2 = 13.7;
    xi = [x1 find(x>x1&x<x2) x2];
    yi = interp1(x,y,xi);
    hold on
    area(xi,yi,'FaceColor','y');
    A adapter...
    Images attachées Images attachées  
    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.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Slt,

    désolé de répondre si tard, mais je suis en train de tester le code, et il y a des choses qui ne sont pas claires pour moi

    voici ton code avec des commentaires

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    y = rand(1,20)*20; % vecteur 1 ligne, 20 colonnes
    calcul1 = area(y);
    x = 1:20; % vecteur 1 ligne, 20 colonnes
    x1 = 1; % valeur inférieur
    x2 = 20; % valeur supérieur
    xi = [x1 find(x>x1 & x<x2) x2]; % vecteur 1 ligne, 20 colonnes
    yi = interp1(x,y,xi); % vecteur 1 ligne; 20 colonnes
    hold on
    calcul2 = area(xi,yi,'FaceColor','y');
    au final calcul1 = 174.0245 et calcul 2 = 176,0240
    si je prend les bornes x1 = 10 et x2 = 15, voici les résultats que j'obtiens
    calcul1 = 174.0253 et calcul 2 = 176,0248

    entre les 2 tests, j'ai bien sûre effacer tout le contenu du workspace

    Si je lance n fois le script avec x1=1 et x2=20, j'ai dans tous les cas les mêmes résultats
    et si je réduits les bornes x1 et x2, par exemple 11 et 11.1, j'ai encore le même résultat.

    je suis perplexe...

    merci de ton aide

  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
    Oui, effectivement, area ne fait que du remplissage sous la courbe, area ne calcule pas l'aire.
    ne renvoie pas la valeur de l'aire mais un handle qui permet de modifier l'affichage.

    A la place de area, utilise trapz.
    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
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    effectivement avec trapz, ça fonctionne

    merci du dépannage

Discussions similaires

  1. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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