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 matlab calcul


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 59
    Points : 35
    Points
    35
    Par défaut question matlab calcul
    Bonjour,

    je suis débutant en Matlab, j'ai un parametre L qui varie de 1 à 5 avec un pas de temps de 0.5 et je veux calculer "source" à chaque valeur de L tel que:

    source = L*exp( -L/25), le programme que j'ai fait et il marche pas et le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    L=1:0.5:5;
    source = L*exp( -L/25)
    mais me signal erreur que le matrix et pas valide!!t

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 76
    Points : 54
    Points
    54
    Par défaut
    tu peux faire une boucle sur les éléments de ta colonne L

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    T=[0:1:50].';   %définition d'un vecteur colonne "temps"
    L=[1:0.5:5].';   % tu obtiens une matrice colonne de 9 éléments
    source=zeros(1,9).'; % tu définis ta matrice source et l'initialise
    for i=1:1:9
         source=L(i)*exp(-L(i)/25); % calcul de la valeur de "source" pour les différents L
    end;
    plot(T,source);  % tracé de "source" en fonction du temps
    Voilà, il y a surement plus simple, si c'est le cas des membres avisés de ce forum de te le diront

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 59
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Nathaniel_etudiant Voir le message
    tu peux faire une boucle sur les éléments de ta colonne L

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    T=[0:1:50].';   %définition d'un vecteur colonne "temps"
    L=[1:0.5:5].';   % tu obtiens une matrice colonne de 9 éléments
    source=zeros(1,9).'; % tu définis ta matrice source et l'initialise
    for i=1:1:9
         source=L(i)*exp(-L(i)/25); % calcul de la valeur de "source" pour les différents L
    end;
    plot(T,source);  % tracé de "source" en fonction du temps
    Voilà, il y a surement plus simple, si c'est le cas des membres avisés de ce forum de te le diront
    merciii bcp c'est ce que je cherche même si ya plus simple c'est trop tard ùnt ta déja donné la réponse

  4. #4
    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
    Salut,

    il ne manquait pas grand chose pourtant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    L=1:0.5:5;
    source = L.*exp( -L/25)
    L'opérateur .* permet d'effectuer une multiplication termes à termes et non une multiplication matricielle.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 76
    Points : 54
    Points
    54
    Par défaut
    Hum, je pense m'être trompé pour la définition de "source". Il faudrait écrire "source(i)" à la place de "source". De plus il faut insérer la ligne "plot(T,source(i))" dans la boucle for.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 59
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Nathaniel_etudiant Voir le message
    Hum, je pense m'être trompé pour la définition de "source". Il faudrait écrire "source(i)" à la place de "source". De plus il faut insérer la ligne "plot(T,source(i))" dans la boucle for.
    voilà ce que j'ai fait dans monpetit programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    T = [300:50:3800].';
    source=zeros(1,71).';
    for i=[1:1:71].';
    R(i) =6.38e14*(1/T(i))*exp(-0.384e5/T(i));
    end;
    plot(T,R(i))
    il me donne erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    inner matrix dimensions must agree????

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 76
    Points : 54
    Points
    54

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 76
    Points : 54
    Points
    54
    Par défaut
    Dans la boucle il faut écrire
    et non
    de plus met la commande "plot" dans la boucle, et pas en dehors. tu peux rajouter la commande "hold on;" dans la boucle, à la suite de la commande "plot".

    Je ne sais pas si c'est ce que tu veux faire..

  9. #9
    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
    Pourquoi mettez-vous des .' à chaque fois que vous créez un vecteur?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    T = [300:50:3800];
    R=zeros(1,71);
    for i=1:71;
        R(i) =6.38e14*(1/T(i))*exp(-0.384e5/T(i));
    end;
    plot(T,R)
    Ou plus simplement (sans boucle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    T = [300:50:3800];
    R =6.38e14.*(1./T).*exp(-0.384e5./T);
    plot(T,R)

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 59
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Nathaniel_etudiant Voir le message
    Dans la boucle il faut écrire
    et non
    de plus met la commande "plot" dans la boucle, et pas en dehors. tu peux rajouter la commande "hold on;" dans la boucle, à la suite de la commande "plot".

    Je ne sais pas si c'est ce que tu veux faire..
    oui c'est ce que je veux faire mais me signal tjrs erreur: inner matrix dimensiosn must agree !! et si tu as remarqué que a matrix elle a les même dimensiosn si je sais bien compter!! non?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 76
    Points : 54
    Points
    54
    Par défaut
    Magelan: oui c'est inutile, ":" est l'opérateur colonne, pas besoin de faire la transposée avec ".' ". Autant pour moi

    Avec ce code là, je n'ai pas d'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    T = 300:50:3800;
    R=zeros(1,71);
    for i=1:1:71;
        R(i) = 6.38e14*(1/T(i))*exp(-0.384e5/T(i));
        plot(T,R(i));
        hold on;
    end;

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 59
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Nathaniel_etudiant Voir le message
    Magelan: oui c'est inutile, ":" est l'opérateur colonne, pas besoin de faire la transposée avec ".' ". Autant pour moi

    Avec ce code là, je n'ai pas d'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    T = 300:50:3800;
    R=zeros(1,71);
    for i=1:1:71;
        R(i) = 6.38e14*(1/T(i))*exp(-0.384e5/T(i));
        plot(T,R(i));
        hold on;
    end;
    OK merci tout le monde

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

Discussions similaires

  1. VBA question de calcul
    Par lenoble09 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 06/03/2012, 15h50
  2. Question de calcul sur les MMO (web)
    Par Golgotha dans le forum Réseau et multijoueurs
    Réponses: 15
    Dernier message: 26/05/2009, 17h47
  3. Petite question de calcul
    Par Charlie111 dans le forum Physique
    Réponses: 2
    Dernier message: 28/11/2008, 13h52
  4. Question Matlab compiler
    Par Antale dans le forum MATLAB
    Réponses: 1
    Dernier message: 30/09/2008, 18h38
  5. Question de calcul d'index
    Par Vince7-7 dans le forum Oracle
    Réponses: 1
    Dernier message: 15/02/2007, 11h22

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