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 :

Simplifier une ligne de calcul


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 109
    Par défaut Simplifier une ligne de calcul
    Bonjour,

    Actuellement, ma ligne est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif (deplacement(i,k)<t1) && (distancex(i,k)>t2) && (distancey(i,k)>t2) && (t1<x(i,k)) && (x(i,k)<s(2)-t1) && (t1<y(i,k))&& (y(i,k)<s(1)-t1)
    On m'avait proposé de la modifier comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            elseif (deplacement(i,k)<t1) && max((distancex(i,k)),(distancey(i,k)))<t2 && min(x(i,k),y(i,k),s(2)-x(i,k),s(1)-y(i,k))>t1 %&& rego{k}(i).Area < seuil
    mais cela ne fonctionne pas il y a un problème dans les conditions à remplir qui ne sont pas remplies (je ne sais pas lesquelles).

    Avez-vous des conseils pour alléger?

    Merci d'avance,

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Par défaut
    Dans un premier temps, pour savoir laquelle n'est pas remplie, tu peux décomposer ton "elseif" en plusieurs...

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    un min a la place du max dans la 2eme condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    elseif (deplacement(i,k)<t1) && min((distancex(i,k)),(distancey(i,k)))>t2 && min(x(i,k),y(i,k),s(2)-x(i,k),s(1)-y(i,k))>t1 
     
    %&& rego{k}(i).Area < seuil
    ++

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 109
    Par défaut
    Alors par contre, je rencontre le problème suivant:

    ??? Error using ==> min
    Too many input arguments.
    pour la seconde condition mais si je la décompose en 2, je ne rencontre plus de problème!! La fonction "min" n'accepte que 2 'arguments'?

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    surement un probléme de parenthéses dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    min(distancex(i,k), distancey(i,k)) > t2
    devrai marcher sans probléme .

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Par défaut
    Essaye de décomposer pour voir si tout est ok au niveau des tes conditions puis essaye de concaténer ensuite...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 109
    Par défaut
    Citation Envoyé par mr_samurai Voir le message
    surement un probléme de parenthéses dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    min(distancex(i,k), distancey(i,k)) > t2
    devrai marcher sans probléme .
    En effet cette partie ne pose pas de problème en fait c'est la dernière partie qui pose pb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    min(x(i,k),y(i,k),s(2)-x(i,k),s(1)-y(i,k))>t1
    sauf si je l'écris en 2 fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    min(x(i,k),y(i,k))>t1 && min(s(2)-x(i,k),s(1)-y(i,k))>t1

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

Discussions similaires

  1. Total : une ligne, plusieurs calculs
    Par ptikiki dans le forum Cognos
    Réponses: 8
    Dernier message: 26/11/2013, 15h43
  2. [XL-2007] erreur de compilation d'une ligne de calcul
    Par amauri dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/06/2012, 12h57
  3. Réponses: 9
    Dernier message: 28/01/2011, 18h04
  4. Paramétrage d'une ligne de calcul
    Par kwatz dans le forum MATLAB
    Réponses: 7
    Dernier message: 13/03/2009, 14h41
  5. Optimiser une ligne de calcul en Assembleur
    Par ALEX77 dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 07/12/2007, 19h08

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