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 :

Tester si 4 valeurs consécutives sont des NaN


Sujet :

MATLAB

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sri Lanka

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 63
    Points
    63
    Par défaut Tester si 4 valeurs consécutives sont des NaN
    Bonjour à tous
    Je veux remplacer un vecteur entier par des NaN en cas où j’ai dans ce vecteur 4 valeurs consécutive = NaN, sinon j’interpole entre les valeurs
    J’ai fais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    test_nan=isnan(X);
                for k=1:length(X)
                    if (test_nan(i)==1) && (test_nan(i+1)==1) && (test_nan(i+2)==1) && (test_nan(i+3)==1)
                        Yi(1:length(X))=NaN;
                    else
                        idx=find(~isnan(X));
                        Yi=interp1(idx,X(idx),1:length(X));
                    end
    l'interpolation marche bien mais le problème c'est qu'on interpole aussi, même en ayant plus de 4 valeurs consécutive en NaN et ça remplace pas la ligne entière par des NaN

  2. #2
    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 helaaa Voir le message
    Bonjour à tous
    Je veux remplacer un vecteur entier par des NaN en cas où j’ai dans ce vecteur 4 valeurs consécutive = NaN,
    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
    16
    17
    18
     
    clear all
    clc
    t=[nan 1 2 nan nan nan nan];
    t2=isnan(t);
    m=0;
     
    for i=1: numel(t2)
        if t2(i)==1
            m=m+1;
        else
            m=0;
        end
        if m==4
            t(1:end)=nan
            break
        end
    end
    Si tu trouves ma réponse utile, n'oublies pas de voter pour ce me message

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sri Lanka

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 63
    Points
    63
    Par défaut
    merci pour la réponse
    je n'ai pas regardé la discussion car j'ai déjà trouver une solution
    là voilà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                test_nan=isnan(X);
                test_nan=test_nan';
                tester= strfind(test_nan, [1 1 1 1]);
                trouvernan = isempty(tester);
                if trouvernan == 1
                    idx=find(~isnan(X));
                    Yi=interp1(idx,X(idx),1:length(X));
                else if trouvernan == 0
                        Yi(1:length(X))=NaN;
                    end
                end
    et merci encore une fois

  4. #4
    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
    Votre solution est plus optimisée.
    Si tu trouves ma réponse utile, n'oublies pas de voter pour ce me message

  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 302
    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 302
    Points : 53 163
    Points
    53 163
    Par défaut
    La condition IF imbriquée n'est pas nécessaire ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if trouvernan == 1
        idx=find(~isnan(X));
        Yi=interp1(idx,X(idx),1:length(X));
    else
        Yi(1:length(X))=NaN;  
    end
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/10/2012, 20h44
  2. Tester si les arguments sont des entiers
    Par mailbox dans le forum Débuter
    Réponses: 4
    Dernier message: 09/11/2010, 15h40
  3. Recherche des bornes de plages de valeurs consécutives
    Par elsuket dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 01/12/2009, 10h21
  4. Réponses: 1
    Dernier message: 19/01/2009, 19h05
  5. Réponses: 22
    Dernier message: 24/08/2005, 18h27

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