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 :

recherche d'une valeur proche


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 65
    Points : 41
    Points
    41
    Par défaut recherche d'une valeur proche
    Bonjour,

    Je m'explique, j'ai un graph, et je veux faire l'intégrale sur une partie de mon graph.

    Je souhaite rentrer manuellement les bornes, mais ce que je rentre ne correspond pas forcément à une valeur existante. Je cherche alors la valeur la plus proche de ma borne souhaitée.

    Par avance,
    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
    Salut,

    je ne suis pas sûr d'avoir compris,
    pourrais-tu nous mettre un petit exemple?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 65
    Points : 41
    Points
    41
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    plot(TimeT,HFT); grid on
    BI = input('Quelle est la borne inferieure? \n')
    find(BI < TimeT & TimeT < BI+1)
    BII = input('Choisir la borne \n')
     
    BS = input('Quelle est la borne superieure? \n')
    find(BS < TimeT & TimeT < BS+1)
    BSS = input('Choisir la borne \n')
    Voila mon bout de code.
    En gros je cherche une fonction qui me permette de trouver dans une liste la valeur la plus proche de N (ou N est un nombre que je choisi)

  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
    Ok, j'ai compris

    Voici comment je procéderai : tu soustrais le nombre choisi à ta liste de valeurs puis tu recherches le minimum de la valeur absolue de cette nouvelle liste.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 309
    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 309
    Points : 52 901
    Points
    52 901
    Par défaut
    L'autre solution consiste à extrapoler la valeur de la fonction à partir de la borne entrée et des points connus qui l'encadrent avec la fonction INTERP1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    x = 1:5;
    y = rand(1,5);
     
    xi = 4*rand+1;
    yi = interp1(x,y,xi);
     
    figure
    p = plot(x,y,'b-',xi,yi,'rs');
    legend(p(2),sprintf('(%.2f;%.2f)',xi,yi))
    Si l'interpolation est linéaire (comme dans l'exemple), il suffit d'appliquer le théorème de Thalès entre les deux points qui encadrent la borne (un petit dessin sur une feuille de papier facilitera la compréhension)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 65
    Points : 41
    Points
    41
    Par défaut
    hop hop hop, merci les gars. J'opté pour la version sans le théorème de thales.

    Voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    plot(TimeT,HFT); grid on
     
    BI = input('Quelle est la borne inferieure? \n')
    BII=find(abs(TimeT-BI)==min(abs(TimeT-BI)))
     
    BS = input('Quelle est la borne superieure? \n')
    BSS=find(abs(TimeT-BS)==min(abs(TimeT-BS)))

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 309
    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 309
    Points : 52 901
    Points
    52 901
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BII=find(abs(TimeT-BI)==min(abs(TimeT-BI)))
    est équivalent à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [BII,BII] = min(abs(TimeT-BI));

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 65
    Points : 41
    Points
    41
    Par défaut
    Merci à nouveau!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rechercher une valeur proche dans tableau à partir d'une liste
    Par bourgui78 dans le forum Général Python
    Réponses: 9
    Dernier message: 15/02/2013, 10h36
  2. Recherche une valeur proche sur une requête
    Par 64moss dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 10/10/2012, 13h02
  3. [VBA] Recherche d'une valeur dans un autre fichiers puis
    Par Nicos77 dans le forum Général VBA
    Réponses: 11
    Dernier message: 24/03/2006, 11h24
  4. Réponses: 40
    Dernier message: 24/02/2006, 14h19
  5. [D6] Recherche d'une valeur dans un fichier
    Par Lung dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 08h26

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