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

Scilab Discussion :

Faire appel à une fonction dans une fonction


Sujet :

Scilab

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 101
    Points : 53
    Points
    53
    Par défaut Faire appel à une fonction dans une fonction
    Bonjour,

    Je suis un petit joueur de Matlab donc habitué à ce langage... Je dois me convertir à Scilab et donc rédiger à nouveau des codes.

    Alors je suis un peu coincé sur un truc surement benêt pour vous. Je vous expose la situation :

    J'ai un code qui s'appelle 'Test.sce' il récupère des données et les calcule. Ensuite il devrait faire appel à une sous-fonction 'EiEr' pour récupérer des données.

    Malheureusement la console se plante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [nkc]=EiEr(a(:,1+j));
                         !--error 4 
    Variable non définie : EiEr
    Pourtant EiEr fonctionne (j'ai inséré manuellement les valeurs d'entrée)... Je ne sais pas comment on rédige une fonction où on l'appellera pour récupérer des données.

    Alors je suis reparti à zéro en mettant une formule toute bête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function [x, y]=myfct(a, b)
    x=a+b
    y=a-b
    endfunction
    Je l'enregistre dans un fichier '.sci' sur le Bureau

    Ensuite je tape sur la console (en vérifiant que je suis bien sur la bonne adresse et avoir déclaré x et y) :
    Et ça m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    -->[x,y]=myfct(3,2)
                     !--error 4 
    Variable non définie : myfct
    Je ne sais pas quoi faire... Pourtant ça a l'air simple...

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Il faut charger la fonction au préalable avec exec :

    Si le fichier .sci n'est pas dans le dossier courant, il faudra mettre le chemin complet vers ce fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    path = ...
    exec(path + "myfct.sci", -1)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 101
    Points : 53
    Points
    53
    Par défaut
    Merci Dut pour ta réponse,

    mais comment je fais pour mettre les paramètres d'entrée de la fonction où on voudrait faire appel ? Egalement comment récupérer les valeurs de sortie ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    path = ...
    exec(path + "myfct.sci", -1)
     
    [x,y] = myfct(3,2)
    exec charge la fonction en mémoire.
    Il faut un seul appel à exec.
    Sauf si tu modifies le contenu de la fonction
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 101
    Points : 53
    Points
    53
    Par défaut
    Ça fonctionne ! Merci Dut !

    Ça m'évitera de mettre toutes les fonctions dans le même fichier.

    Affaire résolu.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/03/2013, 12h05
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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