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 :

Réaliser un algorithme


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 Réaliser un algorithme
    Bonjour, j'ai réalisé un programme, qui permet de calibrer une métrique sur une série de donnée.

    Pour savoir si la calibration est bonne j'ai des indicateurs, au nombre de 6 qui me disent en gros : La mesure est bonne.


    Donc je change mes parmaètres de calibration et je regarde mes indicateurs, et je vais évoluer mes paramètres et je regarde à nouveau jusqu'à ce que ça soit bon.

    J'aimerais en fait réaliser un code pour calibrer automatiquement un des paramètres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    profondeur = 20; %paramètre à calibrer 
     
    results=mafonctionquicalcul; %On détermine la métrique 
     
    if strcmp(test(results),'Non-rejet')==0 %dans le cas où il y a rejet 
    profondeur=profondeur+1; %On test le paramètre suivant 
    return ligne 5 % là c'est mon problème, je ne sais pas si c'est possible de faire ça ??
    end
    Une idée si c'est possible ? merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    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 313
    Points : 52 939
    Points
    52 939
    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
    profondeur = 20; %paramètre à calibrer 
     
    while 1 
     
        results = mafonctionquicalcul; %On détermine la métrique 
     
        if strcmp(test(results),'Non-rejet') || profondeur>profondeur_max
            break
        else
            profondeur = profondeur+1;
        end
     
    end
    Le test profondeur>profondeur_max est un exemple de condition qui permet d'éviter que la boucle ne tourne indéfiniment.

  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 ton aide à quoi correspond profondeur max ?

  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 313
    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 313
    Points : 52 939
    Points
    52 939
    Par défaut
    La boucle suivante est dangereuse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while 1
     
        if condition
            break
        end
     
    end
    Si la condition n'est jamais vérifiée, la boucle tourne indéfiniment et l'exécution du programme est bloquée.

    Il faut donc toujours prévoir un nombre d'itérations au bout duquel la boucle doit s’arrêter, même si la condition n'est pas vérifiée.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    n = 1;
     
    while 1
     
        if condition || n>100
            break
        else n = n+1;
        end
     
    end
     
    if n>100
        error('Condition non atteinte')
    end
    Dans ton cas, on peut peut être considérer qu'à partir d'une certaine profondeur (profondeur_max à partir de laquelle il n'y aurait plus de sens physique) la condition ne sera jamais vérifiée et qu'il faut donc terminer la boucle.

  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
    Très bien merci je comprend,

    ce que je comprend moins c'est que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
     
        if strcmp(value6,'Non_Rejet')==1 ||strcmp(value5,'Non_Rejet')==1 ||strcmp(holder,'Green')==1 || strcmp(value4,'Non_Rejet')==1  || strcmp(value3,'Non_Rejet')==1  ||strcmp(value2,'Non_Rejet')==1 ||strcmp(value1,'Non_Rejet')==1 || profondeurdepart>2000
            break
        else
           profondeurdepart = profondeurdepart+1;
        end
    Break alors que value6 ='Rejet' et que en testant au breakpoint

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strcmp(value6,'Non_Rejet')=0
    ça ne devrait breaker que si toutes les conditions sont réunis ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    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 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Ne serait-ce pas plutôt ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (strcmp(value6,'Non_Rejet')==1 && strcmp(value5,'Non_Rejet')==1 && strcmp(holder,'Green')==1 && strcmp(value4,'Non_Rejet')==1  && strcmp(value3,'Non_Rejet')==1  && strcmp(value2,'Non_Rejet')==1 && strcmp(value1,'Non_Rejet')==1) || profondeurdepart>2000

  7. #7
    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
    Complétement oui, j'ai confondu le "et" et "ou".



    Et je trouve ça un peu restrictif, donc j'aimerais dire au code, on à 5 des 7 valeurs sont Non-rejet alors on break

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for i=1:6
    if strcmp([value num2str(i)],Non_Rejet)==1 
    listing(i,1)=1 ;
    else 
    listing(i,1)=0; 
    end
    if sum(listing)>=5
    break 
    else 
        profondeurdepart = profondeurdepart+1;
        end
    Je suis pas sur de pouvoir concaterler le nom de la variable , je vais tester ça !

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

    Je te conseille de regarder le sujet de FAQ suivant :

    À Noter que le strcmp(...) ==1 est totalement inutile, la sortie de strcmp est déjà un booléen.
    Pense aussi à indenter proprement ton code.

Discussions similaires

  1. Pouvez-vous m'expliquer ce que réalise cet algorithme ?
    Par miss.tania dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 29/07/2015, 16h17
  2. Réaliser un algorithme sous Simulink
    Par icetoby dans le forum Simulink
    Réponses: 8
    Dernier message: 06/05/2013, 09h07
  3. Réaliser un algorithme de satisfiabilité
    Par Abdoulive dans le forum Intelligence artificielle
    Réponses: 1
    Dernier message: 01/02/2009, 15h23
  4. Réaliser un algorithme d'affectations
    Par Nanouche dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/09/2008, 17h21
  5. [AIDE] besoin d'aide pour réaliser un algorithme
    Par quaresma dans le forum Algorithmes et structures de données
    Réponses: 40
    Dernier message: 18/01/2008, 09h35

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