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 :

Générer matrice à partir d'une double boucle for [Débutant]


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Générer matrice à partir d'une double boucle for
    Bonjour,
    Je suis en train de travailler sur l'optimisation des conditions initiales de pression (P0) et de hauteur d'eau (z0) pour avoir une altitude maxi sur une fusée à eau.
    J'ai créé un modèle Simulink qui fonctionne et donne des résultats plutôt corrects ; il donne par exemple l'évolution de l'altitude (que j'ai appelée h) au cours du temps.
    Le fait est que j'aimerais représenter en 3D (avec la fonction mesh par exemple) l'altitude maximale atteinte par la fusée en fonction des deux conditions initiales.

    J'ai créé une double boucle for dans un .m, et j'aimerais qu'il me sorte un matrice à .. lignes et .. colonnes (qui dépendent du pas d'itération que j'aurais choisi), où dans chaque colonne (z0=cte par exemple) il me donnerait chaque valeur de hmax pour les différents P0.
    J'ai tenté de le faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for z0 = 1e-2:2e-2:L
        for P0 = 200000:100000:900000
            sim('Modele') 
            H=max(h)
        end
    end
    Seulement, de cette manière, il m'affiche à chaque calcul la valeur de H (pas gênant), mais lorsque les boucles sont finies, il enregistre pour H la dernière valeur max(h) ...
    Pouvez-vous m'aider à résoudre mon problème ?
    Merci ! (si je me suis pas bien fait comprendre, n'hésitez pas à me demander)

  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 160
    Points
    53 160
    Par défaut
    Comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    k = 0;
    for z0 = 1e-2:2e-2:L
        for P0 = 200000:100000:900000
            sim('Modele') 
            k = k+1;
            H(k) = max(h);        
        end
    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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    J'ai utilisé votre aide pour parvenir à ce que je voulais. J'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    n = 0;
    p = 1;
    for z0 = 1e-2:2e-2:L
        for P0 = 200000:100000:900000
            sim('Modele') 
            n = n+1;
            H(n,p)= max(h);
        end
        p = p+1
        n = 0
    end
    Ainsi, j'obtiens pour H une matrice à n lignes et p colonnes !
    Je vais maintenant essayer de représenter les résultats avec la fonction mesh.
    Je vous tiens au courant !

    Edit : J'ai réussi à avoir ce que je voulais


    Merci beaucoup !

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

Discussions similaires

  1. Sommer dans une double boucle for
    Par ju_cayenne dans le forum MATLAB
    Réponses: 1
    Dernier message: 09/09/2014, 16h23
  2. Réponses: 2
    Dernier message: 25/03/2014, 10h20
  3. Comment réaliser une double boucle FOR ?
    Par charlotte77 dans le forum R
    Réponses: 2
    Dernier message: 20/03/2013, 18h41
  4. Sortir d'une double boucle FOR-END
    Par azboul dans le forum MATLAB
    Réponses: 4
    Dernier message: 05/12/2007, 12h07
  5. Réponses: 2
    Dernier message: 08/03/2007, 12h06

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