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 :

question bete sur les boucles [Débutant]


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut question bete sur les boucles
    Bonjour,

    Je vous pose une question très bete sur les boucles for:

    ==> j'ai l'habitude d'utiliser les boucles for pour faire des choses du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for n=1:1:10
    P(n)=2*a(n)
    end
    ==>mais si je veux faire:
    P=2*a(1)+2*a(2).....+2*a(10)

    es ce que cette boucle convient bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for n=1:1:10
    P=2*a(n)
    end

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    en fait je pose cette question car j'aimerai tracer une courbe du type:


    P(t)=a(1)*t+a(2)*t+a(3)*t



    t est le temps il varie de 0 a 2 par pas de 0,1:


    j'aimerai tracer en faite===> plot(t,P) il y aurait donc 20points


    par contre je n'arrive pas a ordonnacer comme il faut les boucles afin d'avoir le resultat souhaité.

    Pour le moment j'ai essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for t=0:0.1:2
    for n=1:3
    P(t)=a(n)*t
    end
    end
    mais je ne pense pas que ca fonctionne car pour p(t) il faut que ca soit un entier pour donner les composantes 1,2,3....n au vecteur P ?

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    effectivement, il faut que l'indice du vetcteur p soit un entier. De plus tu n'effectue pas la somme (à chaque ittération de n, tu écrases P(t)).

    Une solution parmi d'autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 1; %initialisation d'un compteur pour les indices de P
    P = zeros(1,length(0:0.1:2)); % on initialise aussi P
    for t=0:0.1:2
        for n=1:3
            P(t)=P(t)+a(n)*t
        end
        i = i+1;
    end
    Tu peux aussi modifier le calcul de P(t) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    i = 1; %initialisation d'un compteur pour les indices de P
    P = zeros(1,length(0:0.1:2)); % on initialise aussi P
    for t=0:0.1:2
        P(t)=sum(a(1:3)*t);
        i = i+1;
    end
    C'est l'idée, et cela peut encore être optimisé...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci beaucoup de ton aide!

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Re,

    Dans tes programmes tu ne voulais pas ecrire cela plutot?



    Citation Envoyé par magelan Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 1; %initialisation d'un compteur pour les indices de P
    P = zeros(1,length(0:0.1:2)); % on initialise aussi P
    for t=0:0.1:2
        for n=1:3
            P(i)=P(t)+a(n)*t
        end
        i = i+1;
    end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    i = 1; %initialisation d'un compteur pour les indices de P
    P = zeros(1,length(0:0.1:2)); % on initialise aussi P
    for t=0:0.1:2
        P(i)=sum(a(1:3)*t);
        i = i+1;
    end
    C'est l'idée, et cela peut encore être optimisé...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    je ne comprends pas pourquoi on a pas:

    for i=....
    end

    car comment est incrementé le i ??

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    en faite je veux faire cela sur cet exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for f=1:1:10
    for t=0.1:1:10
    P(t)=(module_RF_mean{f}*cos(2*pi*f*t+argument_RF_mean{f})+module_RF_mean{f}*i*sin(2*pi*f*t+argument_RF_mean{f});
    end
    end

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par 21did21 Voir le message
    Re,

    Dans tes programmes tu ne voulais pas ecrire cela plutot?
    Oui, je me suis emmêler les pinceaux...

    Ca donnerait plutôt ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 1; %initialisation d'un compteur pour les indices de P
    P = zeros(1,length(0:0.1:2)); % on initialise aussi P
    for t=0:0.1:2
        for n=1:3
            P(i)=P(i)+a(n)*t
        end
        i = i+1;
    end
    et pour le deuxième, tu avais corrigé.

    Citation Envoyé par 21did21
    je ne comprends pas pourquoi on a pas:

    for i=....
    end

    car comment est incrementé le i ??
    La variable i permet d'itérer sur les indices du tableau. Il est incrémenter dans la boucle dans la boucle : "i = i+1;".

    Pour ton dernier exemple, il faut que tu utilises 2 indices, un pour chaque variable. Et si j'ai bien compris il faut que tu remplisses un tableau en 2 dimensions.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par 21did21 Voir le message
    en faite je veux faire cela sur cet exemple:
    je corrige car j'ai simplifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for t=0:0.1:2;
    for n=1:1:10
    P(t)=module(n)*cos(2*pi*n*t+argument(n))+module(n)*i*sin(2*pi*n*t+argument(n))
    end
    end

  10. #10
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Et pour chaque P(t), c'est bien la somme de n allant de 1 à 10 que tu veux faire? Si oui, c'est exactement la même chose qu'au dessus. Qu'est ce qui te bloque?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par magelan Voir le message
    Oui, je me suis emmêler les pinceaux...

    Ca donnerait plutôt ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 1; %initialisation d'un compteur pour les indices de P
    P = zeros(1,length(0:0.1:2)); % on initialise aussi P
    for t=0:0.1:2
        for n=1:3
            P(i)=P(i)+a(n)*t
        end
        i = i+1;
    end
    et pour le deuxième, tu avais corrigé.


    La variable i permet d'itérer sur les indices du tableau. Il est incrémenter dans la boucle dans la boucle : "i = i+1;".

    Pour ton dernier exemple, il faut que tu utilises 2 indices, un pour chaque variable. Et si j'ai bien compris il faut que tu remplisses un tableau en 2 dimensions.
    j'ai compris à present.

    MERCI BEAUCOUP!!!!!!!!!!!!

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par magelan Voir le message
    Oui, je me suis emmêler les pinceaux...

    Ca donnerait plutôt ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 1; %initialisation d'un compteur pour les indices de P
    P = zeros(1,length(0:0.1:2)); % on initialise aussi P
    for t=0:0.1:2
        for n=1:3
            P(i)=P(i)+a(n)*t
        end
        i = i+1;
    end
    Pour ton dernier exemple, il faut que tu utilises 2 indices, un pour chaque variable. Et si j'ai bien compris il faut que tu remplisses un tableau en 2 dimensions.

    désolé de revenir sur ce poste mais apres plus mure reflexion ce n'est pas plutot cela qu'il faut ecrire?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 1; %initialisation d'un compteur pour les indices de P
    P = zeros(1,length(0:0.1:2)); % on initialise aussi P
    for t=0:0.1:2
        for n=1:3
            P(i)=a(n)*t
        end
        i = i+1;
    end
    Afin que la premiere somme effectuée pour le temps t1 aille dans la composante 1 de P

    Puis pour que la seconde somme pour le temps 2 aille dans la composante 2 de P?....etc

    Avec les deux methodes j'ai deux resultats differents mais je ne sais pas lequel est bon

    [voir piece jointe]

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par 21did21 Voir le message
    désolé de revenir sur ce poste mais apres plus mure reflexion ce n'est pas plutot cela qu'il faut ecrire?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 1; %initialisation d'un compteur pour les indices de P
    P = zeros(1,length(0:0.1:2)); % on initialise aussi P
    for t=0:0.1:2
        for n=1:3
            P(i)=a(n)*t
        end
        i = i+1;
    end
    Afin que la premiere somme effectuée pour le temps t1 aille dans la composante 1 de P

    Puis pour que la seconde somme pour le temps 2 aille dans la composante 2 de P?....etc

    Avec les deux methodes j'ai deux resultats differents mais je ne sais pas lequel est bon

    [voir piece jointe]

    OK j'ai compris l'erreur quand je fais cela j'ecrase a chaques fois la derniere valeur de P comme tu m'avais expliqué plus tot!

    desolé du post innutile

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

Discussions similaires

  1. question bete sur les structures en C++
    Par nabil.g dans le forum C++
    Réponses: 4
    Dernier message: 23/09/2013, 19h46
  2. [MySQL] question bete sur les boucles
    Par Klink dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 24/01/2013, 15h18
  3. Question bete, sur les functions en php
    Par clemsouz dans le forum Langage
    Réponses: 8
    Dernier message: 03/08/2006, 16h10
  4. [Système] question bete sur les pseudo frames
    Par balou dans le forum Langage
    Réponses: 5
    Dernier message: 12/10/2005, 13h11
  5. [Struts] question bete sur les Action et Form
    Par seb_fou dans le forum Struts 1
    Réponses: 2
    Dernier message: 06/09/2004, 15h24

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