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 :

erreur pendant l'optimisation d'une boucle for


Sujet :

MATLAB

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Points : 78
    Points
    78
    Par défaut erreur pendant l'optimisation d'une boucle for
    bonjour,

    je dois optimiser ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       idx=1;
       for k=2:length(time)
           if vect1(k)~=vect1(k-1) || vect2(k)~=vect2(k-1)
               idx=[idx k];
           end
       end
    time, vect1 et vect2 ont tous la meme longueur.

    Pour ce faire, j'ai essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    condition=(vect1(2:end)~=vect1((2:end)-1) || vect2(2:end)~=vect2((2:end)-1));
     
    idx=[1 find(condition)];
    quand j'exécute ce code, matlab me sort l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ??? Operands to the || and && operators must be convertible to logical scalar values.
     
    Error in ==> essai at 6
    condition=(vect1(2:end)~=vect1((2:end)-1) || vect2(2:end)~=vect2((2:end)-1));
    mais je ne comprend pas pourquoi on ne peut pas faire une condition || sur deux vecteurs alors qu'on peut faire une conduition &.

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Tu as 2 manières de faire OU avec MATLAB : | et ||
    Le 2ème ne fonctionne que si de chaque côté tu as un élément LOGICAL.

    Quand c'est possible il vaut mieux utiliser || car si la 1ère expression est vraie il n'évaluera pas la deuxième.

    Mais ce n'est possible que si ton expression retourne un LOGICAL.

    Dans ton cas essaye avec |
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Points : 78
    Points
    78
    Par défaut
    ah ok. merci.

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

Discussions similaires

  1. Optimisation d'une boucle for
    Par Novice_vba dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 24/07/2013, 15h20
  2. Optimisation d'une boucle for each
    Par misscricri dans le forum VB.NET
    Réponses: 3
    Dernier message: 25/01/2012, 23h06
  3. Optimisation d'une boucle for
    Par Vorlane dans le forum MATLAB
    Réponses: 0
    Dernier message: 07/07/2009, 11h36
  4. [VB-E] Erreur 1004 dans une boucle For
    Par lycaon dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/11/2006, 22h41
  5. Shell - Erreur dans une boucle for
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 11/01/2006, 13h45

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