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 :

[feval] Utilisation de la fonction


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 12
    Points : 4
    Points
    4
    Par défaut [feval] Utilisation de la fonction
    Bonjour;
    j'ai fait un code sous MATLAB, et dans un M-file que je l'ai nommé "main" j'ai fait cet commande path(path, 'test function') pour ajouter le répertoire qui contient les fonction par lequel je vais testé mon code ( exemple d'une fonction test très simple x^2+1, juste exemple c'est pas parmi les miens). J'ai plusieurs fonctions dans cet répertoire.
    dans mon code pour avoir une valeur d'image de la fonction j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    global Fct;
    f(k)= feval (Fct,x);
    le problème que j'ai c'est comment appelé une fonction du répertoire qu'elle doit être 'Fct' ( c-a-d Fct=x^2+1)
    j'arrive pas à trouver la commande qui va me servir de liée une fonction de mon répertoire avec mon code.
    merci de m'aider et j'espère que mon message est claire.
    j'ai vraiment besoin de votre aide car je suis bloqué dans ce niveau.
    Amicalement

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    La première entrée de la fonction feval doit être soit le handle de la fonction, soit le nom (chaine de caractères) de la fonction.
    Donc
    • soit f(k) = feval(@ma_fonction, x);
    • soit f(k) = feval('ma_fonction', x);

    Note : la ligne global Fct; est à retirer, sinon elle crée une variable du même nom masquant la fonction et ne permettant plus de l'utiliser.
    Dernière modification par Invité ; 07/04/2014 à 18h53.

  3. #3
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 12
    Points : 4
    Points
    4
    Par défaut aide concerne le repertoire
    merci, pour ce qui concerne mon répertoire vous savez comment appelé une fonction?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Dès lors que tu l'ajoutes au PATH de MATLAB, ce que tu fais avec path(path, 'test function') (mieux vaut ajouter le chemin complet), tu peux utiliser n'importe quelle fonction contenue dans ce répertoire de façon normale.

  5. #5
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    oui j'ai mis le chemin complet.
    dans mon code j'ai appelé la fonction 'Fct' comme je la cité au dessus, et pour tester le code par d'autre fonction je sais pas comment affecté une fonction de mon répertoire a 'Fct' pour que mon code la connaitre automatiquement. vous avez compri ma question??

  6. #6
    Invité
    Invité(e)
    Par défaut
    Considérant que tu aies deux fonctions qui se nomment ma_fonction1 et ma_fonction2 dans ton répertoire, tu peux faire :

  7. #7
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Voila mon main, c'est juste comme ça?? j'espère que c'est bien claire. merci beaucoup de m'avoir aider et de me donner une partie de votre temps

    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
    18
    19
    20
    21
    22
     
    clear all
    path(path,'C:\Users\Desktop\testFonction'); % pour inclure le rep des Fct test
    fich = fopen('Result.txt', 'w+'); % Fichier des résultats 
    fprintf(fich,'fopt\n');
     
    for i=1:n
        switch i
            case 1 
                x(:,1)=  ;
                Fct='ackley'; % ackley non du fonction dans mon dossier tet fonction
     
            case 2
                x(:,1)= ...;
                Fct='shub';
     
        end
     [fopt]=Mon_Code(x);
      fopt
    fprintf(fich,['%d \n'],x,y);
    end
    fclose(fich)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Plutôt que de faire un switch à rallonge, fais-toi un tableau des fonctions à utiliser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    funs = {@ackley , @shub};  % méthode 1
    funs = {'ackley', 'shub'}; % méthode 2
    En boucle, il te suffira d'y accéder par funs{i}

  9. #9
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    j'ai utilisé switch car chaque fonction a une domaine de recherche différent de l'autre et aussi point initial. merci beaucoup je vais essayé par ceci si ça sera utilisable avec switch

  10. #10
    Invité
    Invité(e)
    Par défaut
    Domaine de recherche que tu as sûrement aussi la possibilité de mettre sous forme de tableau

  11. #11
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup c'est très très gentil de votre part, je vais essayé d'utiliser votre idée.

  12. #12
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 12
    Points : 4
    Points
    4
    Par défaut


    Error using feval
    Undefined function 'Fct' for input arguments of type 'double'.

    Error in Mon_code (line 14)
    f(k)=feval('Fct',x(:,1));

  13. #13
    Invité
    Invité(e)
    Par défaut
    Fct directement vu quelle contient le handle ou la chaine de caractère. Sinon cela suppose que tu as une fonction nommée Fct dans ton répertoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i=1:n
        Fct = funs{i};
        feval(Fct, x)
    end
    Je remarque par contre que ta boucle se fait selon la variable itérative i alors que tu fais f(k)...

  14. #14
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    le 'i' c'est pour le nombre des fonctions que je vais testé et le 'k' égal le nombre d'itération dans mon code.je stock chaque valeur de f(k)...
    j'ai toujours le même erreur et j'arrive pas à m'en sortir. ça va pas marché de mettre une boucle qui contient le feval car ici c'est dans le main et je dois seulement mettre la fonction qui va remplacer 'Fct' dans mon code.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Montre-nous ton code.

  16. #16
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    j'aimerai bien montré mon code pour faciliter la communication mais c'est interdit de le partager pour le moment.

  17. #17
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Merci pour vos aides. j'ai résolu l'erreur de mon code



    Amicalement

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

Discussions similaires

  1. Utilisation de la fonction d'évaluation "feval"
    Par Gutch dans le forum Scilab
    Réponses: 0
    Dernier message: 07/04/2015, 19h57
  2. Utilisation de la fonction de déploiement
    Par mchicoix dans le forum XMLRAD
    Réponses: 4
    Dernier message: 01/03/2005, 14h35
  3. [LG]Utilisation de la fonction Random
    Par chloe95 dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2005, 14h20
  4. Utilisation de la fonction qsort
    Par Jsmeline dans le forum C
    Réponses: 8
    Dernier message: 28/01/2005, 12h40
  5. [LG]librairies : utiliser seulement quelques fonctions
    Par wwwroom dans le forum Langage
    Réponses: 13
    Dernier message: 14/05/2004, 22h50

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