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 :

méthode d'interpolation constante


Sujet :

MATLAB

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

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Points : 78
    Points
    78
    Par défaut méthode d'interpolation constante
    Bonjour,
    J'ai une variable booleenne, vect définie comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Time=[0 1 2 5];
    Vect=[0 1 0 1];
    Connaissez vous une fonction f sous Matlab qui permet d'interpoler des valeurs booleenne (interpolation constante)

    je précise: je cherche f telle que, quand je fais:
    me donne: 1.

    la seule fonction d'interpolation que je connais est interp1, mais elle fait une interpolation linéaire, . moi je voudrais bien une interpolation constante.

    Merci

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Et si tu utilises l'option 'nearest' dans INTERP1, ca ne convient pas à ton usage?

    Bonne apm,
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

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

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Points : 78
    Points
    78
    Par défaut
    bonjour,

    le problème avec nearest c'est que, quand je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    YI = interp1(Time,Vect,1.7,'nearest')
    ca me donne 0 alors que c'est sensé me donner 1.

    en effet, Time=[0 1 2 5] et Vect=[0 1 0 1].. donc la valeur entre 1 et 2 doit etre une constante égale à 1.

    voilà,

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Ah ok, j'avais compris un peu de travers

    Je sais pas si c'est la réponse à ton problème mais tu peux peut-être jeter un coup d'oeil à la fonction STAIRS
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Points : 78
    Points
    78
    Par défaut
    d'accord.

    Le seul problème c'est que stairs permet de tracer la courbe et ne fais pas le calcul.

    dommage que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a=stairs(Time,Vect,1.5)
    ne marche pas.

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Normalement tu peux récupérer les arguments de sortie de STAIRS (sans tracer de courbe), après je pense que c'est possible de l'adapter à ton besoin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [x,y]=stairs(Time,Vect);
    Après tu peux peut-être utiliser INTERP1 plus facilement...
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Points : 78
    Points
    78
    Par défaut
    Ok, ca devrait marcher.
    merci,

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

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Points : 78
    Points
    78
    Par défaut
    bonjour,
    en fait, je viens de m'en rendre compte, la focntion stairs renvoie un´vecteur temps qu'on ne peut pas interpoler vu qu'il contient deux fois le meme instant. . Donc, c'est un peu long à mettre en place cette interpolation "constante":

    1)d'abord on créer les bon vecteurs avec stairs.
    2)on corrige les instants redondants.
    3)on interpole avec interp1.

    Connaissez vous pas une fonction qui fait ca directement ?

    emrci

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Points : 78
    Points
    78
    Par défaut
    wé, em fait, c'est pas tr`s compliqué:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function yi= interpConstant(time,value,xi)
     
    [time_,value_]=stairs(time,value);
     
       for k=1:length(time_)-1
           if time_(k)==time_(k+1)
               time_(k)=time_(k)-(1e-10);
           end
       end
     
       yi=interp1(time_,value_,xi);
     
    end

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

Discussions similaires

  1. Méthode d'interpolation/approximation locale
    Par MrVylsain dans le forum Mathématiques
    Réponses: 21
    Dernier message: 15/07/2013, 15h42
  2. méthodes d'interpolation d'un nuage de points 3D
    Par gpcbitnik38 dans le forum Mathématiques
    Réponses: 7
    Dernier message: 21/12/2011, 11h24
  3. Réponses: 2
    Dernier message: 23/03/2009, 15h58
  4. Méthode d'interpolation a partir d"une série de valeurs
    Par User dans le forum Algorithmes et structures de données
    Réponses: 55
    Dernier message: 18/03/2008, 09h00
  5. A propos des méthodes constantes
    Par Sahara dans le forum C++
    Réponses: 4
    Dernier message: 05/01/2007, 00h43

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