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

Simulink Discussion :

Embedded MATLAB Function


Sujet :

Simulink

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut Embedded MATLAB Function
    Bonjour
    J'ai une fonction matlab .m qui fonctionne normalement si je l'execute sous matlab.
    Je veux mettre cette fonction dans un block embedded function ; mais dés que je clik sur le block voici le message d'erreur que j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Error opening the Embedded MATLAB editor:
    Output argument "varargout" (and maybe others) not assigned during call to "C:\Program Files\MATLAB\R2009a\toolbox\simulink\simulink\slsfnagctlr.m>slsfnagctlr".
     
    Error calling slsfnagctlr('NagToken',...)
    Error using ==> usejava at 47
    useJava.
    Error calling slsfnagctlr('NagToken',...)
    Quelq'un peut SVP m'aider à trouver une solution

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    Je suis pas sur que tu puisses utiliser VARARGOUT (et VARARGIN) dans un bloc Embedded MATLAB.
    Essaye donc de supprimer le VARARGOUT (puisqu'il ne semble pas utiliser en plus).

    Duf

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Bonjour
    Merci pour votre réponse; comment je dois supprimer le VARARGOUT??
    Moi ma fonction elle prend une matrice et renvoie une autre que je dois la récuperer à la sortie.
    Merci d'avance

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Pourrais-tu nous montrer ta fonction? Ca nous aiderais certainement à t'aider...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Ci joint la fonction que j'utilse mais vous pouvez pas l'executer parce qu'elle fait appel à d'autre fonctions et je pourrais pas tous vous envoyer car c'est volumineux.
    Cette fonctions prend en parametre une matrice de trois dimensions et renvoies une matrice aussi mais 2 dimensions.
    Vous trouverrez en piece jointe le parametre q'elle prend en parametre
    Images attachées Images attachées
    Fichiers attachés Fichiers attachés

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Par défaut
    Bonjour,

    Je me retrouve exactement avec la même erreur, à savoir dans mon cas j´ai placé dans ma function principal un uiwait(mafonctionsecondaire) ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function [] = mafonctionprincipale(varargin)
    % mon code
    uiwait(mafonctionsecondaire);
    end
    function [varargout] = mafonctionsecondaire(varargin)
    %Création d´une figure
    end
    Je reçois sans arrêt cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Error in mafonctionprincipale>mafonctionsecondaire(line 559)
    global mavariableglobal
     
    Output argument "varargout" (and maybe others) not assigned during call to
    "C:\monrepertoire\mafonctionprincipale.m>mafonctionsecondaire".
     
    Error in mafonctionprincipale(line 464)
        uiwait(mafonctionsecondaire);
    PS : J´ai ma figure qui est pourtant bien créer
    PS 2 : Si j´enlève le varargout de mafonctionsecondaire je reçois aussitôt l´erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error using mafonctionprincipale>mafonctionsecondaire
    Too many output arguments.
     
    Error in mafonctionprincipale(line 464)
        uiwait(mafonctionsecondaire);
    Merci!

  7. #7

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Par défaut
    Bonjour,

    Merci Winjerome,

    Solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function [] = mafonctionprincipale(varargin)
    % mon code
    uiwait(mafonctionsecondaire);
    end
    function [varargout] = mafonctionsecondaire(varargin)
    %Création d´une figure
    varargout = {mavariableglobale1 mavariableglobale2};end
    Par contre désormais je reçois cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error using uiwait (line 49)
    Input argument must be of type figure
     
    Error in mafonctionprincipale(line 466)
        uiwait(mafonctionsecondaire);
    Le fait est que mafonctionsecondaire creer une figure

    PS : 1 fois la figure créer je rentre des paramètres dans cette figure grâce a des edit text puis j´appuis sur un button ok et c´est seulement la que je rentre le uiresume(gcbf)

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par junkie1986 Voir le message
    Le fait est que mafonctionsecondaire creer une figure
    C'est justement le handle de cette nouvelle figure qu'il faut rentrer dans uiwait.
    Donc uiwait plutôt dans mafonctionsecondaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function [] = mafonctionprincipale(varargin)
        % mon code
        [mavariableglobale1 mavariableglobale2] = mafonctionsecondaire;
    end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function [varargout] = mafonctionsecondaire(varargin)
     
        % ...
        uiwait(handleFigure)
        varargout = {mavariableglobale1 mavariableglobale2};
    end

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Par défaut
    Bonsoir,

    Merci Winjerome

    PS : Si j´avais su j´aurais fais directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function [] = mafonctionprincipale(varargin)
    % mon code
    mafonctionsecondaire();
    end
    function [] = mafonctionsecondaire(varargin)
    %Création d´une figure
    end
    Au lieu de passer mes variables globales en sortie, dont au passage je ne vois pas l´interet puisque ce sont des variables globales

  11. #11
    Invité
    Invité(e)
    Par défaut
    J'ai fait ce qui semblait le plus proche de ton code. Tu utilisais varargout et semblais donc vouloir faire ressortir ces variables.
    Enfin cela pourra servir à d'autres...

    De toute façon utiliser les variables globales c'est pas bien

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/10/2007, 11h27
  2. [Embedded Matlab Function] Etablir un compteur
    Par berberat dans le forum Simulink
    Réponses: 1
    Dernier message: 28/09/2007, 10h36
  3. [Embedded Matlab Function] Problème d'utilisation
    Par berberat dans le forum Simulink
    Réponses: 1
    Dernier message: 21/09/2007, 15h27
  4. [Embedded MATLAB function] Comment ça fonctionne ?
    Par droledelolo dans le forum Simulink
    Réponses: 1
    Dernier message: 04/04/2007, 09h03
  5. [Embedded MATLAB Function] Type mxArray
    Par 250583 dans le forum Simulink
    Réponses: 2
    Dernier message: 28/03/2007, 15h31

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