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 :

Obtention de valeurs differentes de zeros


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Obtention de valeurs differentes de zeros
    Bonjour à tous,

    Mon problème est le suivant:
    J'ai une matrice carrée composée majoritairement de valeurs nulles. J'ai quelques valeurs non nulles par colonnes et je chercher à récupérer la première valeur non nulle de chaque colonne.

    En gros j'ai cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [0 0 0 0 0; 
    0 1 0 2 0;
    0 0 0 0 0;
    3 4 5 6 7;]
    et je veux obtenir cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [0 0 0 0 0; 
    0 1 0 2 0;
    0 0 0 0 0;
    3 0 5 0 7;]
    voir cela:
    J'ai testé cela (repris sur un autre fil de discussion):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    idx=V1~=0;
    OK=V1(idx)
    toc
    Mais cela permet de récupérer toutes les valeurs non-nulles. Peut-on adapter pour récupérer la première valeur non-nulle de chaque colonnes?

    Merci d'avance!
    Toma

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    M = [0 0 0 0 0;
    0 1 0 2 0;
    0 0 0 0 0;
    3 4 5 6 7];
     
    V = zeros(1,size(M,2));
    for i = 1:size(M,2)
       V(i) = M( find(M(:,i)~=0,1,'first') , i); 
    end
    V

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Merci pour ta réponse.

    Pour le moment, j’obtiens une message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Improper assignment with rectangular empty matrix
    Je vais essayer de trouver ce qui cloche...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Alors c'est que tu as des colonnes qui ne contiennent que des 0.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    V = zeros(1,size(M,2));
    for i = 1:size(M,2)
        idx = find(M(:,i)~=0,1,'first');
        if ~isempty(idx)
            V(i) = M( idx , i); 
        end
    end

  5. #5
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    En 3 lignes, et sans boucle for :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    M = [0 0 0 0 0;
    0 1 0 2 0;
    0 0 0 0 0;
    3 4 5 6 7];
     
    [a, b, c] = find(M) ;
    [x, y, t] = unique (b, 'first') ;
    I = sub2ind(size(M), a(y), b(y)) ;
     
    disp(M(I))
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Merci!

    ça fonctionne parfaitement!


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

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/05/2007, 11h47
  2. Nombre de valeurs differentes ?
    Par tryonyco dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/10/2006, 10h57
  3. Un champ: deux valeurs differentes 2
    Par Nizarazu dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/08/2006, 19h12
  4. Un champ: deux valeurs differentes
    Par Nizarazu dans le forum Langage SQL
    Réponses: 6
    Dernier message: 23/08/2006, 21h29
  5. [VB]obtention de valeur de pixel
    Par tuonela dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 24/02/2006, 09h06

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