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 :

Fonction de deux paramètres


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 33
    Points
    33
    Par défaut Fonction de deux paramètres
    Bonjour à tous !

    Voici mon problème

    J'ai une fonction assez compliquée qui dépend de deux paramètres x et t.

    Pour l'instant j'ai crée une liste x, j'ai fixé t et j'ai tracé ma fonction. J'aimerais pouvoir tracer ma fonction à différents t sans avoir à créer des t1,t2, ... et recopier ma fonction à chaque fois, j'ai essayé diverses méthodes mais ça ne marche pas

    D'autre part je souhaiterais faire un spectrogramme avec t en abcisse,x en ordonnée, et les différentes valeurs de f correspondant à un code couleur. Le problème est que je ne peux pas inverser ma relation pour avoir x en fonction de f. Y a t'il moyen de faire autrement ?

  2. #2
    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,
    Citation Envoyé par phyfab Voir le message
    Pour l'instant j'ai crée une liste x, j'ai fixé t et j'ai tracé ma fonction. J'aimerais pouvoir tracer ma fonction à différents t sans avoir à créer des t1,t2, ... et recopier ma fonction à chaque fois, j'ai essayé diverses méthodes mais ça ne marche pas
    Justment, tu peux créer une fonction (function) qui te permettra de ré-utiliser ta fonction sans ré-écrire tout le code.

    Citation Envoyé par phyfab Voir le message
    D'autre part je souhaiterais faire un spectrogramme avec t en abcisse,x en ordonnée, et les différentes valeurs de f correspondant à un code couleur. Le problème est que je ne peux pas inverser ma relation pour avoir x en fonction de f. Y a t'il moyen de faire autrement ?
    Pourquoi as-tu besoin de x en fonction de y?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Ah merci c'est ça que je cherchais !

    En fait ma fonction c'est la température en fonction de la position x et du temps T(x,t), je veux faire un spectrogramme de T(x,t), j'aimerais avoir x en ordonnée, t en abcisse, en rouge les zones de plus hautes températures, en bleu les zones de plus basses températures, quelque chose comme ça

    un exemple : http://questions2physique.files.word...ectrogram3.gif

  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
    Donc il te suffit d'avoir les données x, t et T (que tu es en train de calculer si j'ai bien compris), puis utiliser une fonction comme imagesc, mais cela dépend du format des données. Quand tu auras ces données, pourrais-tu nous les fournir pour faire des tests?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Ce sont des listes, j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x=0:0.001:e;
    t=0:10:1000;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T=T1-4*((T1-T0)/(pi)).*sin(pi*x/e)*(exp(-D*t*(1*pi/e)^2))+4*((T1-T0)/(3*pi))*sin(3*pi*x/e)*exp(-D*t*(3*pi/e)^2)+4*((T1-T0)/(5*pi))*sin(5*pi*x/e)*exp(-D*t*(5*pi/e)^2)+4*((T1-T0)/(7*pi))*sin(7*pi*x/e)*exp(-D*t*(7*pi/e)^2);
    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    T1=220;
    T0=20;
    D=0.0004;
    e=1;

  6. #6
    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
    Du coup, si tu calcules T pour chaque x et t :
    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
    T1=220;
    T0=20;
    D=0.0004;
    e=1;
    x=0:0.001:e;
    t=0:10:1000;
     
    T = zeros(length(x),length(t));
    for k=1:length(x)
        for p=1:length(t)
            T(k,p)=T1-4*((T1-T0)/(pi)).*sin(pi*x(k)/e)*(exp(-D*t(p)*(1*pi/e)^2))+4*((T1-T0)/(3*pi))*sin(3*pi*x(k)/e)*exp(-D*t(p)*(3*pi/e)^2)+4*((T1-T0)/(5*pi))*sin(5*pi*x(k)/e)*exp(-D*t(p)*(5*pi/e)^2)+4*((T1-T0)/(7*pi))*sin(7*pi*x(k)/e)*exp(-D*t(p)*(7*pi/e)^2);
        end
    end
     
    imagesc(x,t,T)
    ou en vectorisant le code (attention à bien utiliser l'opérateur '.*' pour faire des multiplications terme à terme) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    T1=220;
    T0=20;
    D=0.0004;
    e=1;
    x=0:0.001:e;
    t=0:10:1000;
    
    T = zeros(length(x),length(t));
    [tt xx] = meshgrid(t,x);
    T=T1-4*((T1-T0)/(pi))*sin(pi*xx/e).*(exp(-D*tt*(1*pi/e)^2))+4*((T1-T0)/(3*pi))*sin(3*pi*xx/e).*exp(-D*tt*(3*pi/e)^2)+4*((T1-T0)/(5*pi))*sin(5*pi*xx/e).*exp(-D*tt*(5*pi/e)^2)+4*((T1-T0)/(7*pi))*sin(7*pi*xx/e).*exp(-D*tt*(7*pi/e)^2);
    
    imagesc(x,t,T)
    A adapter selon ce que tu souhaites afficher
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/09/2012, 08h50
  2. fonction avec deux listes en paramétres
    Par misterfed dans le forum Langage
    Réponses: 17
    Dernier message: 25/05/2012, 15h17
  3. Envoi de deux paramètres à une fonction JS
    Par DeveloppeurWeb dans le forum ASP.NET
    Réponses: 1
    Dernier message: 10/12/2010, 12h05
  4. [AC-2003] Comment appeler une fonction avec deux paramètres. Erreur '=' attendu
    Par nirG95 dans le forum VBA Access
    Réponses: 1
    Dernier message: 02/09/2009, 10h53
  5. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00

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