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 :

numel non appelé


Sujet :

MATLAB

  1. #1
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut numel non appelé
    Bonjour,

    Je définis une classe qui surcharge subsref subsasgn et numel.
    Soit x une instance.
    x.machin appelle bien x.numel(); mai pourquoi diable x.machin{:} n'appelle-t'il pas x.numel() ?

    Merci d'avance.

  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 : 40
    Localisation : France

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

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

    Pourrais-tu nous montrer la classe en question?

    Es-tu sûr qu'il doive appeler NUMEL dans les 2 cas?

    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour Duf,

    Es-tu sûr qu'il doive appeler NUMEL dans les 2 cas?
    Absolument pas, mais s'il existe une doc officielle et détaillée sur le sujet je suis preneur !

    Cela étant, mon subsref recoit bien les 2 indices <.machin> et <{:}>, donc je ne vois vraiment pas, si mon numel n'est pas appelé, comment matlab va bien pouvoir calculer le nombre d'éléments à renvoyer.

    La classe est lourde, je commence par le code de subsref

    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
     
    function varargout= subsref(self,idx)        
            varargout= {};
            i= idx;        
            [loc,i,v,ot]= self.cn_dot(i,0);
            if ot== 1
                v=self; i=[substruct('.', 'wrapped') i];
            end
            if ~isempty(i)
                varargout= {nan};%cell(v.numel(idx),1);
                if isequalwithequalnans(idx(end),substruct('{}',{':'}))
                    %varargout= cell(numel(subsref(v,idx(1:end-1))),1);
                    varargout= num2cell(nan(1,numel(subsref(v,idx(1:end-1)))));
                end
                [varargout{:}]= builtin('subsref',v,i);
            else
                varargout= {v};
            end       
        end
    En gros je redirige self.machin sur un sous élément de self. Les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if isequalwithequalnans(idx(end),substruct('{}',{':'}))
                    %varargout= cell(numel(subsref(v,idx(1:end-1))),1);
                    varargout= num2cell(nan(1,numel(subsref(v,idx(1:end-1)))));
                end
    sont une tentative infructueuse de ma part de renvoyer le nombre attendu d'arguments sur self.machin{:}. Voici ce qu'il se passe en mode debug sur 1/ self.numel n'est pas appelé
    2/ mon subsref recoit bien les deux indices .machin et {:}
    3/ le varargout que je crée est de la bonne taille, et builtin('subsref', y assigne ce que j'attends
    4/ En sortant de la fonction je ne récupère que le 1er élément de ce varargout !!!!

Discussions similaires

  1. Filtre non appelé avec jsp:include
    Par atuan dans le forum Taglibs
    Réponses: 1
    Dernier message: 08/11/2006, 11h27
  2. classe Action non appelée
    Par jc44 dans le forum Struts 1
    Réponses: 4
    Dernier message: 18/08/2006, 14h22
  3. onkeyup non appellé
    Par GregPeck dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/02/2006, 17h22
  4. Verifier formulaire - fonction non appelée
    Par nerick dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/12/2005, 17h44
  5. Réponses: 3
    Dernier message: 23/08/2005, 11h02

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