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 :

Condition if "différent de 0" dans une boucle for


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Décembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Autre
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2014
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Condition if "différent de 0" dans une boucle for
    Bonjour,
    J'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for j=1:211
        Bi1=sort(Bi(2,:)','descend');
        % BETAS SUPERIEURS à 0
        % NB: différent de 0 : ~= mais ca fonctionne pas si je remplace > par
        % ~= dans le if !!!
        if Bi1(j,:)>0
        Bi2(j,:)=sort(Bi1(j,:),'descend');
        end
    end
    Comme écrit dans le commentaire, lorsque je met la condition qui consiste à inclure dans Bi2 uniquement les lignes de ma matrice Bi1 (211x1) plus grandes que zéro, mon script fonctionne. Mais mon objectif est d'inclure dans Bi2 toutes les lignes de ma matrice Bi1 qui sont différentes de 0, donc positives et négatives. Or, lorsque je remplace ">" par "~=" (=symbole différent si j'ai bien compris), le résultat de ma matrice Bi2 est inapproprié :/
    Si quelqu'un pourrait donc me dire pourquoi ça ne marche pas, ou plutôt quelle modification y a-t-il à faire pour que cela fonctionne, ce serait vraiment sympa et vous en remercie ;)

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

    Bi est-il dépendant de j ? Dans le cas contraire, tu peux sortir cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bi1=sort(Bi(2,:)','descend');
    de la boucle.

    De plus selon cette même ligne, Bi1 est normalement un vecteur, inutile donc de l'indexer avec les deux points Bi1(j,:), mais seulement Bi1(j) (idem Bi2) ne représentant qu'une seule valeur sur laquelle un sort n'a aucun effet.

    Concernant le "vrai" problème, voyons cela sur un exemple simple. Mettons que tu aies Bi1 = [1 0 3].

    Mais qu'à-t-on fait de la case Bi2(2) ? N'aurait-on pas dû faire Bi2(2) = Bi1(3) ?
    Non affectée, cette case a reçu une valeur par défaut de 0 (ou est restée à sa valeur précédente si fixée). Ton ~= marche donc comme il faut, c'est la logique qu'il faut un peu revoir.
    Par exemple utiliser un autre indice qui ne s'incrémente que lorsque l'on passe dans le if.

    À noter que tu peux utiliser l'indexage logique directement comme ceci, sans t'embêter avec une boucle ou des indices :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Bi1 = sort(Bi(2,:), 'descend');
    Bi2 = Bi1( Bi1~=0 );
    Dernière modification par Invité ; 13/12/2014 à 07h39.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Décembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Autre
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2014
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonsoir,

    Un immense merci c'est parfait !!!
    Merci également pour l'explication détaillée

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

Discussions similaires

  1. Plusieurs conditions dans une boucle for
    Par kimikou dans le forum C
    Réponses: 2
    Dernier message: 16/11/2011, 00h03
  2. [PHP 5.3] Tester des conditions dans une boucle for
    Par coulane dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2010, 11h50
  3. [XL-2007] Double condition If dans une boucle for
    Par luko6 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/11/2009, 14h01
  4. Condition dans une boucle for
    Par nicolasferraris dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/04/2009, 17h28
  5. Appliquer un next sous conditions dans une boucle for
    Par Kibald dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/01/2009, 08h56

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