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 :

saveas dans une boucle ?


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    doctorant
    Inscrit en
    Décembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 25
    Points : 24
    Points
    24
    Par défaut saveas dans une boucle ?
    Bonjour

    j'ai un probleme dans 'utilisation de "saveas" pour enregisters les figures
    j'ai beaucoup de figures (100 ou plus)
    j'ai utiliser les boucles mais le probleme est dans le nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     for P=1:1:16 % rayon de courbure de la lentille
     
           figure(P)
     
           xlabel('l"indice de refraction')
           ylabel('l"efficacite de couplage')
     
     
    title(['l"efficacite de couplage en fonction de l"indice de refraction  avec rayon de courbure R= ',num2str(R(P)),'um'])
     
        for M=1:1:27 % l'epaisseur de la lentille
     
       hold on  
    F=plot(indice,squeeze(Nu(M,P,:)));
     
        end
        saveas(F,'figure 1','jpg')
         end
    le problème dans le nom comment je peux changer le nom chaque fois ? puisque si j’exécute le programme il enregistrer la dernier figure et les autre sont crasser

    merci d’avance

  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 302
    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 302
    Points : 53 163
    Points
    53 163
    Par défaut
    La réponse à ta question se trouve dans la FAQ : Comment nommer une suite de fichiers : nom_1.ext, nom_2.ext... nom_N.ext ?

    Plusieurs remarques.

    Il n'est pas nécessaire de créer autant d'objet Figure, un seul suffit.
    Il faut penser à le nettoyer à chaque itération avec clf (par exemple).

    Le premier argument de saveas est l'identifiant d'un objet Figure, ce qui n'est pas le cas de la variable F dans ton code.

    LE format JPEG n'est pas adapté à l'enregistrement des graphiques avec des lignes. Utilise plutôt le GIF ou le PNG.

    Voici le code corrigé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    fig = figure;
     
    for P = 1:1:16 % rayon de courbure de la lentille
     
        clf
     
        xlabel('l"indice de refraction')
        ylabel('l"efficacite de couplage')
     
        title(['l"efficacite de couplage en fonction de l"indice de refraction  avec rayon de courbure R= ', num2str(R(P)), 'um'])
     
        for M = 1:1:27 % l'epaisseur de la lentille
     
            hold on
            plot(indice, squeeze(Nu(M,P,:)));
     
        end
     
        filename = sprintf('figure%03d.png', P);
        saveas(fig ,filename, 'png');
     
    end
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre à l'essai
    Homme Profil pro
    doctorant
    Inscrit en
    Décembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    bonsoir
    merci vous êtes gentil les figures sont enregistré correctement normalement vous avez prix noble en Matlab
    mon ami j'ai une dernier question dans plot
    comment je peux dessigne chaque ligne dans la meme figure avec une autre coleur c-a-d dans une figure j'ai 27 courbe plus ou moins je veux dessiner chaque courbe avec une autre couleur ou autre forme par example
    plot(x,y,'r')
    plot(x2,y2,'b')
    et l'utilisation de la comande "legend" dans la boucle ?
    une example :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for M = 1:1:27 % l'epaisseur de la lentille
     
            hold on
            plot(indice, squeeze(Nu(M,P,:)));
     
        end
    dans ce cas j'ai 27 courbes dans la même figure , je peux changer la boucle pour obtenir 27 figure et 16 courbe dans une figure
    le problème comment utilise les boucle pour dessiner chaque courbe avec une autre forme ou couleur et comment utiliser l fonction "legend" dans une boucle pour illustrer les courbes dans la figure

    je pense il est très difficile si vous n'avez pas le solution c'est pas grave puisque vous avez déjà me donné la solution de l’enregistrement
    merci beaucoup
    Images attachées Images attachées  

  4. #4
    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
    Dut t'a déjà donné le lien de la , tu aurais pu avoir la curiosité de la lire en entier tu aurais trouvé 2 sujets pouvant t'intéresser :
    Comment associer une couleur unique à chaque courbe tracée ?
    Comment effectuer l'ajout d'une légende dans une boucle ?
    Règles du Forum

    Adepte de la maïeutique

  5. #5
    Membre à l'essai
    Homme Profil pro
    doctorant
    Inscrit en
    Décembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    Dut t'a déjà donné le lien de la , tu aurais pu avoir la curiosité de la lire en entier tu aurais trouvé 2 sujets pouvant t'intéresser :
    Comment associer une couleur unique à chaque courbe tracée ?
    Comment effectuer l'ajout d'une légende dans une boucle ?
    merci beaucoup Caro-line et bien sur Dut a cause de vous j'ai fini le programme et voila une exemple d'une figure il'y a autres 15 figures
    pour FAQ oui j'ai lu mais je sais pas je ne voie pas
    je pense comme ça c'est la meilleure figure ou je peux améliorer ?

    essentielle merci mes amis pour m'aider
    Images attachées Images attachées  

  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 302
    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 302
    Points : 53 163
    Points
    53 163
    Par défaut
    Tu peux améliorer le texte comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    xlabel('Indice de refraction')
    ylabel('Efficacite de couplage')
     
    title(['Efficacite de couplage en fonction de l''indice de refraction  avec rayon de courbure R = ', num2str(R(P)), ' um'])
    ou encore si 'um' signifie micromètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    title(['Efficacite de couplage en fonction de l''indice de refraction  avec rayon de courbure R = ', num2str(R(P)), ' \mum'])
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Membre à l'essai
    Homme Profil pro
    doctorant
    Inscrit en
    Décembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par Dut Voir le message
    Tu peux améliorer le texte comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    xlabel('Indice de refraction')
    ylabel('Efficacite de couplage')
     
    title(['Efficacite de couplage en fonction de l''indice de refraction  avec rayon de courbure R = ', num2str(R(P)), ' um'])
    ou encore si 'um' signifie micromètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    title(['Efficacite de couplage en fonction de l''indice de refraction  avec rayon de courbure R = ', num2str(R(P)), ' \mum'])
    merci bien Dut oui "um" c'est micromètre merci pour l’idée
    Désolé pour les nombreuses questions
    Images attachées Images attachées  

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 163
    Points
    53 163
    Par défaut
    Tu peux aussi mettre le titre sur plusieurs lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    str = sprintf('Efficacite de couplage en fonction de l''indice de refraction\navec rayon de courbure R = %d \\mum',R(P));
    title(str)
    J'ai considéré ici que les valeurs de R étaient des entiers (d'où le %d)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  9. #9
    Membre à l'essai
    Homme Profil pro
    doctorant
    Inscrit en
    Décembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    woow!!!
    je peux expliquer mon programme
    ce programme calcule le couplage optique mais j'ai beaucoup de variable R (entre 25 et 40 micromètre ), épaisseur (20 et 150 micromètre ) l'indice de réfraction (entre 1.4 et 1.59 ), j'ai essayer entre 1.4 et 1.49 puis j utilise les valeur réel
    et aussi beaucoup de calcules (optique gaussienne )...
    puis je trace les figures comme tu voie
    je vous remercie pour toute l'aide

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

Discussions similaires

  1. [langage] incrementation de variable dans une boucle
    Par mimilou dans le forum Langage
    Réponses: 15
    Dernier message: 16/04/2004, 13h23
  2. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19
  3. swf dans une boucle asp
    Par Chucky69 dans le forum Flash
    Réponses: 11
    Dernier message: 10/02/2004, 17h07
  4. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 14h37
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 08h52

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