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 :

Enlever valeurs nulles d'une boucle avec condition


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Par défaut Enlever valeurs nulles d'une boucle avec condition
    Bonjour, je me permets de vous contacter, car j'ai un problème, le code fait apparemment ce que je lui demande, cependant quand la condition "Global" n'est pas respectée le fichier Exposition2 à une valeur nulle.

    ça me fait un truc du style

    [] [] []

    [] [] []

    A 0,1 44

    Donc pour les 2 premières lignes les conditions ne sont pas respectée donc j'ai une valeur nulle.

    Moi je souhaite que ça me donne ça :

    A 0,1 44

    Bref que ça enlève les valeurs nulles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for j = 1:size(nom_fichier,1) %taille de l'echantillon 
    for i = 1:numel(Exposition.([Type_dossier nom_fichier(j,:)]).textdata(:,5)) %taille de l'echantion 
        if ne(strcmp('GLOBAL',Exposition.([Type_dossier nom_fichier(j,:)]).textdata(i,5)), 0); %Condition si la valeur est Global 
            %Fichier exposition contenant les valeurs filtrés 
     
            Var1 = Exposition.([Type_dossier nom_fichier(j,:)]).textdata(i,4); %Ensemble de variable à copier 
            Var2 = Exposition.([Type_dossier nom_fichier(j,:)]).data(i,1);
            Var3 = Exposition.([Type_dossier nom_fichier(j,:)]).data(i,2);
     
             Exposition2.([Type_dossier nom_fichier(j,:)])(i,:) = [Var1 Var2 Var3];
        end
    end
    end
    Merci pour votre aide

  2. #2
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut
    Il y cell array dans lequel tu écris à l'indice i plus grand que end+1, ce qui rajoute des éléments vide. Il faut insérer à l'emplacement end+1 et non i.
    Voici un exemple équivalent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    x={};
    x{2} = 'quelquechose';
    x % contient [] à l'emplacement 1
     
    x={};
    x{end+1} = 'quelquechose';
    x %  pas de [] insérés

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Par défaut
    Je ne connaissais pas cette possibilité je test ça merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for j = 1:size(nom_fichier,1) %taille de l'echantillon 
    for i = 1:numel(Exposition_brut.([Type_dossier nom_fichier(j,:)]).textdata(:,5)) %taille de l'echantion 
        if ne(strcmp('GLOBAL',Exposition_brut.([Type_dossier nom_fichier(j,:)]).textdata(i,5)), 0); %Condition si la valeur est Global 
            %Fichier exposition contenant les valeurs filtrés 
             
            Var1 = Exposition_brut.([Type_dossier nom_fichier(j,:)]).textdata(i,4); %Ensemble de variable à copier 
            Var2 = Exposition_brut.([Type_dossier nom_fichier(j,:)]).data(i,1);
            Var3 = Exposition_brut.([Type_dossier nom_fichier(j,:)]).data(i,2);
            
             Exposition_Raf.([Type_dossier nom_fichier(j,:)])(end+1,:) = [Var1 Var2 Var3];
        end
    end
    end
    C'est bien ça qu'il faut faire ? mais j'ai toujours le même problème

  5. #5
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut
    Du coup c'est surement la création de Var1 ,2,3 qui fait cela. Pour quoi la boucle sur i ? Tu dois pouvoir traiter les vecteurs dans leur ensemble sans boucler dessus.

    Je te conseilles d'y aller en mode debug. Mets un point d’arrêt au début, exécute pas à pas et vérifie quelle ligne est responsable du problème.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Par défaut
    Le problème c'est que j'ai pas d'erreur.

    ça tourne bien sauf que j'ai des lignes cellules [] et en debug mode ça me trouve rien

Discussions similaires

  1. [E07] erreur sur une boucle avec condition
    Par rvtoulon dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 18/03/2009, 14h59
  2. Réponses: 2
    Dernier message: 26/01/2009, 15h38
  3. Update dans une boucle avec valeur incrémentale
    Par framus.class dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/09/2008, 11h19
  4. Créer une boucle avec condition
    Par mfontan dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/06/2008, 17h14
  5. Valeur Null dans une condition
    Par jmde dans le forum VBA Access
    Réponses: 8
    Dernier message: 29/07/2007, 04h48

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