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 :

Plusieurs fonctions pour une variable [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Par défaut Plusieurs fonctions pour une variable
    bonjour,
    je souhaiterai définir plusieurs fonctions identiques à partir d'une variable.
    Actuellement j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fun=input('quelle est la fonction:')
    qui fait appelle à une fonction "handle": @(x)(cos(x))
    Par la suite j'aimerai représenter, intégrer... une fònction 3D bâtie sur la fonction de départ.
    Il faudrait donc que je puisse définir par exemple fun(x) et fun(y) à partir de mon "input".
    merci

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    Salut,

    je ne suis pas sur de bien comprendre, un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fun2 = @(x,y)(fun(x)+fun(y));
    ne te conviens pas ?

    ++

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Par défaut
    Regarde peut-être du coté de la commande eval qui permet d'executer le code correspondant à une chaine de caractères donnée.

  4. #4
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Par défaut
    sisi tout à fait!
    c'est exactement ca
    cependant l'écriture ne passe pas pour la représentation avec mesh:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fun1=@(x)(cos(x));
    fun2 = @(x,y)(fun1(x)+fun1(y));
    [x,y] = meshgrid(-2:.1:2, -2*pi/2:.1:2*pi/2);mesh(x,y,fun2)
    j'ai défini d'autres manières et il semble que le @ ne soit pas accepté.
    Peut on contourner le souci?
    merci

    Sinon oui j'ai regardé EVAL et ca a pas l'air mal non plus mais la fonction définie par mr_samurai est plus simple à comprendre

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    MESH ne prend pas une fonction en paramètre, mais plutôt une matrice .

    Essayes comme ça :

    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
    fun1=@(x)(cos(x));
    fun2 = @(x,y)(fun1(x)+fun1(y));
     
    x = -2:.1:2;
    y = -2*pi/2:.1:2*pi/2;
     
    M = zeros(length(x),length(y));
     
    for i=1:size(M,1)
        for j=1:size(M,2)
            % Tu peux essayer de vectoriser la boucle
            M(i,j) = fun2(x(i),y(j));
        end
    end
     
    [X,Y] = meshgrid(x,y);
    mesh(X,Y,M')
    ++

  6. #6
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Par défaut
    impressionnant !!
    on m'a déja conseillé de passer par des vecteurs ou des matrices pour faire des calculs... Je trouve pas ca très évident mais ca marche.
    merci beaucoup pour l'explication!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/10/2010, 09h35
  2. Plusieurs trigger pour une même fonction
    Par floriaan60 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 25/06/2010, 22h16
  3. [MySQL] Plusieurs valeurs pour une variable à injecter
    Par pony99 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 03/12/2008, 12h04
  4. Réponses: 3
    Dernier message: 06/04/2007, 10h09
  5. [C#] Plusieurs LinkButton pour une seule fonction
    Par FunnyDjo dans le forum ASP.NET
    Réponses: 3
    Dernier message: 08/06/2005, 22h01

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