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 :

Erreur Matlab "Too many input arguments"


Sujet :

MATLAB

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2011
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 221
    Points : 62
    Points
    62
    Par défaut Erreur Matlab "Too many input arguments"
    Bonjour,
    "Too many input arguments" : en regardant la Faq :
    http://matlab.developpez.com/faq-err...nput_arguments
    Je n'arrive pas à trouver de significations ou d'explications au niveau de mon code (programmation orientée objet) avec cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ??? Error using ==> GetVitesse
    Too many input arguments.
     
    Error in ==> main>LancerSimulation/AvancerVehicule at 203
                                    v_suiveur = suiveur.GetVitesse(t-1);
     
    Error in ==> main>LancerSimulation at 49
                AvancerVehicule(t, decalage);
     
    Error in ==> main at 41
    LancerSimulation(Horizon,decalage);
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            %DEBUT DE LA FONCTION IMBRIQUEE AvancerVehicule%
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            function AvancerVehicule(t,decalage)
                %avancer les vehicules sur les tronçons
                q = numel(config.ListeTroncon);
                for LO=1:q 
                    n = numel(config.ListeTroncon{LO}.ListeVehTroncon);
                    if t > 0
                        for LVO = 1:n 
                            Veh = config.ListeTroncon{LO}.ListeVehTroncon{LVO};
                            %verifier si le vehicule a un leader ou non
                            if isempty(Veh) && t > 0  % vide
                                %verifier si le vehicule est devant dans sa voie
                                v_veh = Veh.GetVitesse(t-1);
                                acc_veh = Veh.GetAcceleration(t-1);
                                Pos_actuel = Veh.GetPosition(t-1);
                                nouvelle_pos = Pos_actuel+v_veh*Pas_sim;
                                Veh.SetPosition(nouvelle_pos);
                                Veh.SetVitesse(v_veh);
                                Veh.SetAcceleration(acc_veh);
                            else
                                suiveur = Veh;
                                leader = Veh.GetLeader();
                                Hentree = suiveur.GetHeureEnt();
                                if (t - Hentree) > decalage
                                    modele_GSOM (leader, suiveur, t, decalage)
                                else
                                    v_suiveur = suiveur.GetVitesse(t-1);
                                    acc_suiveur = suiveur.GetAcceleration(t-1);
                                    Pos_actuel = suiveur.GetPosition(t-1);
                                    nouvelle_pos = Pos_actuel + v_suiveur*Pas_sim;
                                    ind_suiveur = suiveur.GetTronconActuel().index_tronc;
                                    ind_leader = leader.GetTronconActuel().index_tronc;
                                    if ind_suiveur == ind_leader
                                        pos_leader = leader.GetPosition(t);
                                    else
                                        pos_leader = leader.GetPosition(t-1);
                                        if nouvelle_pos + Min_gap > pos_leader
                                            v_lead = leader.GetVitesse(t-1);
                                            nouvelle_pos = Pos_actuel + v_lead * Pas_sim;
                                            v_suiveur = v_lead;
                                        end%if(nouvelle_pos+Min_gap)
                                    end%if(ind_suiveur)
                                    suiveur.SetPosition (nouvelle_pos);
                                    suiveur.SetVitesse (v_suiveur);
                                    suiveur.SetAcceleration (acc_suiveur);
                                end %if(t-Hentree)
                            end %if (veh)
                        end %for(LVO)
                    end %if(t)
                end %for(LO)
                end
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            %FIN DE LA FONCTION IMBRIQUEE AvancerVehicule%
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
     
    % class definition
    % ------------------------------------------------------------------------------------------------------------------------
    % vehicule: implementation et interface de la classe vehicule
    % ------------------------------------------------------------------------------------------------------------------------
    classdef vehicule
        % définition des propriétés
        % ---------------------------------------------------------------------------------------------------------------------
        properties (SetAccess = public, GetAccess = public)
            posi = [];  % position du vehicule sur le troncon
            vitesse = []; % vitesse instantannée du véhicule
            acceleration = []; % accélération du véhicule
            deceleration = []; % deceleration du vehicule
            Hentree = 0; % heure d'entree du veh en nb de pas_sim
            leader = {}; % le leader du véhicule en question
            suiveur = {};% le suiveur du véhicule en question
            voieActuelle = {}; % voie actuelle sur laquelle le vehicule circule actuellement
            orig_actuel = {}; % origine sur laquelle le vehicule circule actuellement
            tronc_actuel = {}; % troncon sur lequel le vehicule circule actuellement
            dest_actuel = {}; % destination sur laquelle le vehicule circule actuellement
            trajet = [];  % position du vehicule sur le troncon
        end
     
        % les méthodes publiques de la classe
        % ---------------------------------------------------------------------------------------------------------------------
        methods
            % Constructeurs
            % -------------------------------------------------------------------------------------------------------------------------------------------------
            function vehicule = node(posi, vitesse, acceleration, deceleration, Hentree, leader, suiveur, voieActuelle, orig_actuel, tronc_actuel, dest_actuel, trajet)
                vehicule.posi = posi;
                vehicule.vitesse = vitesse;
                vehicule.acceleration = acceleration;
                vehicule.deceleration = deceleration;
                vehicule.Hentree = Hentree;
                vehicule.leader = leader;
                vehicule.suiveur = suiveur;
                vehicule.voieActuelle = voieActuelle;
                vehicule.orig_actuel = orig_actuel.Origine;
                vehicule.tronc_actuel = tronc_actuel.Troncon;
                vehicule.dest_actuel = dest_actuel.Destination;
                vehicule.trajet = trajet;
            end
     
            % les méthodes "get" d'accès aux propriétés
            % ---------------------------------------------------------------------------------------------------------------------
            function posi = GetPosition(vehicule)
                posi = vehicule.posi;
            end
     
            function vitesse = GetVitesse(vehicule)
                vitesse = vehicule.vitesse;
            end
     
            function acceleration = GetAcceleration(vehicule)
                acceleration = vehicule.acceleration;
            end
     
            function deceleration = GetDeceleration(vehicule)
                deceleration = vehicule.deceleration;
            end
     
            function Hentree = GetHeureEnt(vehicule)
                Hentree = vehicule.Hentree;
            end
     
            function leader = GetLeader(vehicule)
                leader = vehicule.leader;
            end
     
            function suiveur = GetSuiveur(vehicule)
                suiveur = vehicule.suiveur;
            end
     
            function voieActuelle = GetVoieActuelle(vehicule)
                voieActuelle = vehicule.voieActuelle;
            end
     
            function orig_actuel = GetOrigineActuelle(vehicule)
                orig_actuel = vehicule.orig_actuel;
            end
     
            function tronc_actuel = GetTronconActuel(vehicule)
                tronc_actuel = vehicule.tronc_actuel;
            end
     
            function dest_actuel = GetDestinationActuelle(vehicule)
                dest_actuel = vehicule.dest_actuel;
            end
     
     
            % les méthodes "set" d'accès aux propriétés
            % ---------------------------------------------------------------------------------------------------------------------
     
            function vehicule = SetPosition(vehicule, x)
                vehicule.posi = x;
            end
     
            function vehicule = SetVitesse(vehicule, v)
                vehicule.vitesse = v;
            end
     
            function vehicule = SetAcceleration(vehicule, acc)
                vehicule.acceleration = acc;
            end
     
            function vehicule = SetDeceleration(vehicule, dec)
                vehicule.deceleration = dec;
            end
     
            function vehicule = SetHeureEnt(vehicule, t)
                vehicule.Hentree = t;
            end
     
            function vehicule = SetLeader(vehicule, Lead)
                vehicule.leader = Lead;
            end
     
            function vehicule = SetSuiveur(vehicule, Suiv)
                vehicule.suiveur = Suiv;
            end
     
            function vehicule = SetVoieActuelle(vehicule, VoieAct)
                vehicule.voieActuelle = VoieAct;
            end
     
            function vehicule = SetOrigineActuelle(vehicule, OA)
                vehicule.orig_actuel = OA;
            end
     
            function vehicule = SetTronconActuel(vehicule, TA)
                vehicule.tronc_actuel = TA;
            end
     
            function vehicule = SetDestinationActuelle(vehicule, DA)
                vehicule.dest_actuel = DA;
            end
     
        end  % end of public methods
     
    end  % end of class definition

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

    Que souhaites-tu faire en rentrant t-1 dans tes getteurs GetVitesse, GetAcceleration et GetPosition ?
    Toujours-est-il que je t'ai déjà expliqué le fonctionnement dans ce message.
    Dans le cas de la POO dans MATLAB, le premier argument des méthodes représente l'instance de l'objet et non un premier paramètre.

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2011
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 221
    Points : 62
    Points
    62
    Par défaut
    En rajoutant (t-1) ça veut dire que je veux accéder à un élément de position "t-1" (à l'instant "t-1") de mes vecteurs contenant les positions, les accélérations, les vitesses...
    http://matlab.developpez.com/faq/?pa...ellarray_acces


  4. #4
    Invité
    Invité(e)
    Par défaut
    Merci, je sais encore comment fonctionne un tableau

    Si je suis bien ton code, le vecteur c'est Veh, donc applique ceci dessus

  5. #5
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2011
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 221
    Points : 62
    Points
    62
    Par défaut
    Je suis bien débutante en Matlab, donc les choses qui peuvent vous sembler concevables peuvent me paraître trop compliquées
    C'est pour ça j'ai pas compris votre réponse !
    (veh) n'est pas mon vecteur !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Alors c'est quoi le vecteur ici !

  7. #7
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2011
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 221
    Points : 62
    Points
    62
    Par défaut
    Pour la ligne là où il y a l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    v_suiveur = suiveur.GetVitesse(t-1);
    Mon vecteur est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vitesse = []; % vitesse instantannée du véhicule
    Mon but est d'obtenir la vitesse de mon véhicule (veh) à l'instant (t-1) en utilisant ma méthode qui a pour objectif ça à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function vitesse = GetVitesse(vehicule)
                vitesse = vehicule.vitesse;
            end
    Et (suiveur) est ma classe objet (Vehicule.m)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    suiveur = Vehicule ();
    Donc j'ai fait comme vous m'avez dit au par avant pour appeler ma fonction "GetVitesse" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    valeur = maClasse.nomGetter();
    maClasse.nomSetter(valeur)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Donc récupère ton vecteur, puis sa valeur à l'instant t-1.

  9. #9
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2011
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 221
    Points : 62
    Points
    62
    Par défaut
    Et ben Crois moi j'aurai pas dû poser la question si j'avais la réponse (comment récupérer mon vecteur vitesse, puis sa valeur à l'instant (t-1) en utilisant uniquement ma méthode (GetVitesse) sans la modifier au niveau de la classe (vehicule.m) ) ! càd tout en gardant (GetVitesse) définie de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function vitesse = GetVitesse(vehicule)
                vitesse = vehicule.vitesse;
            end
    C'est pour ça j'ai demandé de l'aide sur mon forum favori !

  10. #10
    Invité
    Invité(e)
    Par défaut
    Tu te rends bien compte que Veh.GetVitesse(t-1) passe l'indice à la méthode ? Le message d'erreur et mon explication ont été assez clairs sur ce point, non ?

    Donc :

    C'est je crois à ta portée non, d'appliquer cela à la lettre ?

    Et je me permets de te rappeler ce que j'ai déjà dit dans le message vers lequel je t'ai dirigé : tes propriétés étant publiques, tes getteurs/setteurs ne faisant rien d'autre que de retourner/fixer leur valeurs sont inutiles.
    v_veh = Veh.vitesse(t-1) aurait largement suffit et t'aurait évité d'avoir à ouvrir cette discussion.

    PS : plutôt que de montrer encore et encore (inutilement) le même code, montre le nouveau que tu as essayé, montre au moins que tu réfléchis de ton côté.

  11. #11
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Bonjour !

    Tiens, un Winjerome agaçé, c'est rare ! Pourtant le code est de relativement bonne qualité et Winjerome est quelqu'un de calme d'habitude... que se passe-t-il ? Après lecture, je crois que j'ai compris : ghada97, je crois que tu t'es enlisé dans ton code, et tu as besoin d'un peu de recul... Je vais essayer de t'aider à cela

    Il faut bien que tu fasses attention que quand tu utilises les méthodes de type "get", ça ne nécessite pas de paramètre ! Donc, la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    v_suiveur = suiveur.GetVitesse(t-1);
    n'a aucun sens ! D'ailleurs l'erreur te dit que tu lui spécifies trop d'argument(s) :
    ??? Error using ==> GetVitesse
    Too many input arguments.
    Or tu n'as mis qu'un seul paramètre... donc cela signifie que ça accepte zéro paramètre (reprends moi Winjerome si je me trompe). A ce moment là, le bon réflexe c'est de se poser la question suivante :
    "Mais en fait, que fait ma méthode <GetVitesse> ?"
    Si je ne me trompe pas, GetVitesse te renvoit un vecteur vitesse, et elle ne peut faire que ça.

    ==> Donc, si tu veux récupérer ta vitesse à l'instant t-1, tu dois faire ce que vient de dire Winjerome (cf plus haut : tu peux lire le message juste avant le mien, celui de winjerome, il est la continuité logique de ce que je viens de dire maintenant)

    ..........................................................

    Dernier conseil : fais une pause et reprends ça à tête reposée dans deux jours. Tu auras un oeil neuf et tu comprendras qu'à force d'être plongé dans le code, tu en as presque oublié pourquoi tu le faisais.

    Bon courage, tu codes proprement je trouve, c'est bien !

    Cordialement,
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

Discussions similaires

  1. [cellfun] Erreur "Too many inputs"
    Par syki.mail dans le forum MATLAB
    Réponses: 9
    Dernier message: 29/12/2011, 06h27
  2. [Qt] moc : too many input file
    Par plaristote dans le forum Visual Studio
    Réponses: 1
    Dernier message: 08/03/2011, 09h56
  3. [uicontrol] Erreur "Too many input arguments."
    Par oliv27400 dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 02/06/2010, 11h06
  4. [MySQL] Erreur accès dossier : Too many levels of symbolic links
    Par Max_ASUS dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 27/05/2010, 09h59
  5. Pgsql : erreur de connexion 'too many clients ...'
    Par petitmoosse dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 21/08/2003, 14h03

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