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 :

[Amélioration] transformation des NaN par valeurs choisies


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut [Amélioration] transformation des NaN par valeurs choisies
    Bonjour,

    J'ai un vecteur du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    y=[NaN NaN NaN 23 45 63 24 54 56 NaN NaN NaN NaN]
    J'aimerais transformer les premiers NaN par la première valeur réelle (23) et les derniers par le dernière valeur réelle (56).
    Je fais donc un truc un peu rébarbatif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    a=isnan(y);
    b=find(a==1);
    NbrNaN=numel(b);
    c=b-[1:length(b)];
    idx1=sum(c==0);
    idx2=b(idx1+1);
    y(1:idx1)=y(idx1+1)
    y(idx2:end)=y(idx2-1)
    Y'a t il moyen d'améliorer ce code par de l'indexage logique? et si oui, pourrait ton facilement l'améliorer pour permettre de faire la même chose avec un vecteur plus compliqué. Par exemple, transformer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    y=[NaN NaN NaN 23 45 24 NaN NaN 24 54 56 NaN NaN]
    en :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    y=[23  23  23  23 45 24 24 24 24 54 56 56 56]
    Merci d'avance.
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  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,

    Ma proposition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    y(isnan(y)) = interp1(x(~isnan(y)),y(~isnan(y)),x(isnan(y)),'nearest','extrap')
    Duf
    Simulink & Embedded Coder

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

  3. #3
    Membre éprouvé
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Points : 1 146
    Points
    1 146
    Par défaut
    Citation Envoyé par duf42 Voir le message
    Bonjour,

    Ma proposition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    y(isnan(y)) = interp1(x(~isnan(y)),y(~isnan(y)),x(isnan(y)),'nearest','extrap')
    Duf
    très bonne solution, juste j'ajoute
    Si tu trouves ma réponse utile, n'oublies pas de voter pour ce me message

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    bien joué..

    Merci !
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  5. #5
    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
    Citation Envoyé par soft001 Voir le message
    très bonne solution, juste j'ajoute
    Bien vu
    Simulink & Embedded Coder

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

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

Discussions similaires

  1. Grouper des donnees par valeur d'une donnee
    Par yaya_la_rafale dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 23/04/2015, 10h27
  2. Envoyer des objets par valeur
    Par Promeneur dans le forum Windows Communication Foundation
    Réponses: 7
    Dernier message: 28/03/2008, 17h45
  3. Remplacer des cellules par leurs valeurs
    Par benoitbs dans le forum Excel
    Réponses: 1
    Dernier message: 28/01/2008, 11h21
  4. Remplacer des balises par des valeurs dans une String
    Par RadicalBob dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2007, 15h22
  5. Passage des arguments par valeur
    Par mpereg dans le forum Général Python
    Réponses: 4
    Dernier message: 13/03/2007, 17h12

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