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 :

supprimer les cellules vides


Sujet :

MATLAB

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Points : 46
    Points
    46
    Par défaut supprimer les cellules vides
    Bonjour je viens vous voir car j'ai une matrice qui à cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    A = 
    1    []    []
    2    []    [] 
    3    4     [] 
    []   5     [] 
    []   []    6
    []   []    7
    []   []    8
    J'aimerais obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A = 
    1    4  6
    2    5  7
    3    []  8

    J'ai testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A(~cellfun('isempty',A))
    Mais j'ai en output ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    A = 
    1
    2
    3
    4
    5
    6
    7
    8

    Auriez vous une idée ?

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Je suppose que tu peux te débrouiller de la sorte, même si il y a certainement plus simple:

    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
    19
    20
    21
    22
    23
    24
    A = 
     
        [1]     []     []
        [2]     []     []
        [3]    [4]     []
         []    [5]     []
         []     []    [6]
         []     []    [7]
         []     []    [8]
     
    idx = cellfun(@isempty,A,'UniformOutput',false)
     
    idx = 
     
        [0]    [1]    [1]
        [0]    [1]    [1]
        [0]    [0]    [1]
        [1]    [0]    [1]
        [1]    [1]    [0]
        [1]    [1]    [0]
        [1]    [1]    [0]
     
    temp = cell2mat(idx);
    find(~temp)
    Et puis tu peux ordonner en utilisant des concaténations et size(A)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Points : 46
    Points
    46
    Par défaut
    Merci pour ta réponse, mais cela ne semble pas fonctionner, ou alors pas pratique pour retrouver ce que je cherche à faire

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    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 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Une solution :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    A = {1    []    []
        2    []    []
        3    4     []
        []   5     []
        []   []    6
        []   []    7
        []   []    8}
     
    B = cell(size(A));
     
    maxk = 0; 
    for m = 1:size(A,2)    
        k = 0;
        for n = 1:size(A,1)        
            if ~isempty(A{n,m})
                k = k+1;
                B{k,m} =  A{n,m};
            end        
        end    
        maxk = max(k, maxk);
    end
     
    if maxk<size(B,1)
        B(maxk+1:end,:) = [];
    end
     
    B

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Points : 46
    Points
    46
    Par défaut
    fonctionne parfaitement, merci beaucoup pour ton aide

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

Discussions similaires

  1. ValidateList depuis une autre page en supprimant les cellules vides
    Par Sylvain84000 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/09/2013, 09h43
  2. [XL-2010] Liste horizontale : supprimer les cellules vides
    Par Thierry360 dans le forum Excel
    Réponses: 3
    Dernier message: 23/01/2013, 22h26
  3. [XL-2010] Supprimer les cellules vides d'une plage aléatoire et décaler à gauche
    Par ketum88 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/08/2011, 18h36
  4. Supprimer les cellules vides d'une sélection
    Par Franc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/03/2008, 15h04
  5. Afficher les cellules vides...
    Par Invité dans le forum ASP
    Réponses: 1
    Dernier message: 31/08/2005, 17h32

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