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 :

[cellfun] Erreur "Too many inputs"


Sujet :

MATLAB

  1. #1
    Membre régulier
    Enseignant Chercheur
    Inscrit en
    Décembre 2011
    Messages
    172
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 172
    Points : 73
    Points
    73
    Par défaut [cellfun] Erreur "Too many inputs"
    Bonjour
    j'ai un pb dans une portion de code.
    L'erreur lors de compilation:
    ??? Too many inputs.
    
    Error in ==> test at 62
      vids = cellfun(@(x)fullfile(classes{ci},x),{vids.name},'UniformOutput',false) ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for ci = 1:length(classes)
        % 25*6:
      vids = dir(fullfile(conf.calDir, classes{ci}, '*.avi'))' ;
      %selectionner 9 vidéo par classes:
     
        vids = vl_colsubset(vids, conf.numTrain + conf.numTest) ;
     
      vids = cellfun(@(x)fullfile(classes{ci},x),{vids.name},'UniformOutput',false) ;
      videos = {videos{:}, vids{:}} ;
      videoClass{end+1} = ci * ones(1,length(vids)) ;
     
    end
    help help help

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    c'est le message d'erreur complet?

  3. #3
    Membre régulier
    Enseignant Chercheur
    Inscrit en
    Décembre 2011
    Messages
    172
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    oui c le message complet
    help help help !

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par syki.mail Voir le message
    oui c le message complet
    C'est bizarre, cela ne ressemble pas exactement au message habituel.

    Je ne vois pas d'erreur dans la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vids = cellfun(@(x)fullfile(classes{ci},x),{vids.name},'UniformOutput',false) ;
    Peux-tu nous montrer le code complet de la fonction test?

  5. #5
    Membre régulier
    Enseignant Chercheur
    Inscrit en
    Décembre 2011
    Messages
    172
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    bonjour
    voila le code complet:
    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
     
     
    clear all;
    clc;
    % USR vlfeat:
    disp (' Création de la structure du travail vidéo...')
    % données de la base vidéo:
    conf.calDir = 'C:\code\dataset\KTH' ;
    conf.dataDir = 'C:\code\' ;
    %conf.dataDir = 'data\' ;
    conf.numTrain = 4 ;
    conf.numTest = 5 ;
    conf.numClasses = 6;
    conf.numWords = 1000 ;
    conf.quantizer = 'kdtree' ;
    conf.svm.C = 10 ;
    conf.svm.solver = 'pegasos' ;
    conf.svm.biasMultiplier = 1 ;
     
    conf.prefix = 'baseline' ;
    % creation des fichiers .mat
    conf.vocabTPath = fullfile(conf.dataDir, [conf.prefix '-vocabT.mat']) ;
    conf.vocabSPath = fullfile(conf.dataDir, [conf.prefix '-vocabS.mat']) ;
    conf.BOWTPath = fullfile(conf.dataDir, [conf.prefix '-BOWTApp.mat']) ;
    conf.BOWSPath = fullfile(conf.dataDir, [conf.prefix '-BOWSApp.mat']) ;
    conf.histsTPath=fullfile(conf.dataDir, [conf.prefix '-BOWTT.mat']) ;
    conf.histsSPath=fullfile(conf.dataDir, [conf.prefix '-BOWTS.mat']) ;
    conf.modelPath = fullfile(conf.dataDir, [conf.prefix '-model.mat']) ;
    conf.TrajAppPath = fullfile(conf.dataDir, [conf.prefix 'trajectoriesApp']) ;
    conf.siftaccAppPath = fullfile(conf.dataDir, [conf.prefix '-siftaccApp']) ;
    conf.TrajtotPath = fullfile(conf.dataDir, [conf.prefix 'trajectories']) ;
    conf.siftacctotPath = fullfile(conf.dataDir, [conf.prefix '-siftacc']) ;
    conf.modelPath = fullfile(conf.dataDir, [conf.prefix '-model.mat']) ;
    conf.resultPath = fullfile(conf.dataDir, [conf.prefix '-result.mat']) ;
     
    classes = dir(conf.calDir) ;
    classes = classes([classes.isdir]) ;
     
    classes = {classes(3:conf.numClasses+2).name};
     
    videos = {} ;
    videoClass = {} ;
    for ci = 1:length(classes)
     
      vids = dir(fullfile(conf.calDir, classes{ci}, '*.avi'))' ;
     
        vids = vl_colsubset(vids, conf.numTrain + conf.numTest) ;
     
        %%%%%% jusqu'a ici tt va bien; vids contient les noms de 9  vidéo %choisies
        %l’erreur ici: too many argument:
      vids = cellfun(@(x)fullfile(classes{ci},x),vids.name,'UniformOutput',false) ;
      videos = {videos{:}, vids{:}} ;
      videoClass{end+1} = ci * ones(1,length(vids)) ;
     
    end
     
    selTrain = find(mod(0:length(videos)-1, conf.numTrain+conf.numTest) < conf.numTrain) ;
    selTest = setdiff(1:length(videos), selTrain) ;
    videoClass = cat(2, videoClass{:}) ;
     
    model.classes = classes ;
     
    model.quantizer = conf.quantizer ;
    model.vocab = [] ;
    model.w = [] ;
    model.b = [] ;
    model.classify = @classify ;
     
    selTrainFeats = vl_colsubset(selTrain,5*10) ;
      trajectoriesApp = {} ;
      siftaccApp= {};
      siftspatialApp={};
      X={};
      Y={};
      for ii = 1:length(selTrainFeats)
     
        video =fullfile(conf.calDir, videos{selTrainFeats(ii)}) ;
        [X{ii} Y{ii}]= calcultrajectoires(video);
        close all;
         siftaccApp{ii}=calculsiftacc(video, X{ii} ,Y{ii} );
         siftspatialApp{ii}=siftspatial(video, X{ii} ,Y{ii});
     
      end
     
      siftaccAp=cat(1,siftaccApp{:});
      siftspaApp=cat(1, siftspatialApp{:});
     
     
       [dommy3 vocabSS]= kmeans(siftspaApp, 300);
       [domy2  vocabS] = kmeans(siftaccAp, 1000);
     
    nbp=0;
     
      for ii = 1:length(videos)
     
        %fprintf('traitement %s (%.2f %%)\n',videos{ii}, 100 * ii / length(videos)) ;
        video= fullfile(conf.calDir, videos{ii}) ;
        ii
        [ X{ii} Y{ii} ]= calcultrajectoires(video);
        close all;
        [n m]=size(X{ii});
        nbp=nbp+n*m;
         siftacc{ii}=calculsiftacc(video, X{ii} ,Y{ii} );
         siftspa{ii}=siftspatial(video, X{ii} ,Y{ii});
     
      end
     
    BOWTT={};
    BOWTS={};
    BOWTSP={};
     
    for ii = 1:length(videos)
     
    %dernier stade
    [BOWTS3{ii}] = calcVisualWordHist (siftacc{ii},vocab3');
    [BOWTSP{ii}] = calcVisualWordHist (siftspa{ii},vocabSS);
     
    end
     
    BOWTTM = cat(2, BOWTT{:}) ;
     BOWTSM = cat(2, BOWTS{:}) ;
     BOWTSPM = cat(2, BOWTSP{:}) ;
     
     
      save(conf.histsTPath, 'BOWTTM') ;
     save(conf.histsSPath, 'BOWTSM') ;
     
    BOW=[ BOWTSM ;BOWSPM];
    le fichier KTH contient la base vidéo dont je travail. Il contient 6 répertoires( classes) dans chaque répertoires il y a 25 vidéo .avi

    est ce qu'il y a qq choses que je dois l'installer par exemple?

    help svp

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 308
    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 308
    Points : 52 891
    Points
    52 891
    Par défaut
    Quelle est ta version de MATLAB ?

    Es-tu sûr que les paramètres d'entrée correspondent à ceux donnés dans la documentation de la version que tu utilises ?

    Avec la version R2009a de MATLAB, j'obtiens le message d'erreur suivant :
    ??? Error using ==> cellfun
    Input #2 expected to be a cell array, was char instead.
    
    Error in ==> test at 49
      vids = cellfun(@(x)fullfile(classes{ci},x),vids.name,'UniformOutput',false) ;
    qui devrait se corriger comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vids = cellfun(@(x)fullfile(classes{ci},x),{vids.name},'UniformOutput',false) ;

  7. #7
    Membre régulier
    Enseignant Chercheur
    Inscrit en
    Décembre 2011
    Messages
    172
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    J'ai matlab 7.0.4
    oui les paramètres d'entrés c'est comme la documentation.

    même j'ai essayer de mettre {}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      vids = cellfun(@(x)fullfile(classes{ci},x),{vids.name},'UniformOutput',false) ;

    mais encore c'est le même message d'erreur.

    proposez moi si je peux changer cette instruction avec une autre et j'obtien la même chose?

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 308
    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 308
    Points : 52 891
    Points
    52 891
    Par défaut
    Citation Envoyé par syki.mail Voir le message
    J'ai matlab 7.0.4
    oui les paramètres d'entrés c'est comme la documentation.
    En es-tu bien sûr ?

    => CELLFUN - MATLAB 7.0.4

    Citation Envoyé par syki.mail Voir le message
    proposez moi si je peux changer cette instruction avec une autre et j'obtien la même chose?
    Tu peux simplement utiliser une boucle FOR-END :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for n = 1:6
     
       V{n} = fullfile(classes{ci},vids(n).name);
     
    end

  9. #9
    Membre régulier
    Enseignant Chercheur
    Inscrit en
    Décembre 2011
    Messages
    172
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    re bonjour
    Je sais pas encore quelle est le pb avec cellfun ou mais ça marche avec la boucle.
    Merci bk pour l'effort
    a+

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 308
    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 308
    Points : 52 891
    Points
    52 891
    Par défaut
    Citation Envoyé par syki.mail Voir le message
    Je sais pas encore quelle est le pb avec cellfun ou mais ça marche avec la boucle.
    C'est pourtant ce que j'ai essayé de t'expliquer...
    Tu utilises CELLFUN avec une syntaxe qui ne correspond pas à ta version de MATLAB.

    Pour informations, on peut se passer de la boucle FOR-END en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    V = strcat(classes{ci},filesep,{vids.name});
    ou dans un cas plus général et de façon plus robuste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if classes{ci}(end)==filesep
        V = strcat(classes{ci},{vids.name});
    else
        V = strcat(classes{ci},filesep,{vids.name});
    end

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

Discussions similaires

  1. [Débutant] Erreur Matlab "Too many input arguments"
    Par ghada97 dans le forum MATLAB
    Réponses: 10
    Dernier message: 25/09/2013, 17h39
  2. Erreur système : Too many open files
    Par AL1986 dans le forum Administration système
    Réponses: 3
    Dernier message: 28/03/2011, 22h10
  3. [Qt] moc : too many input file
    Par plaristote dans le forum Visual Studio
    Réponses: 1
    Dernier message: 08/03/2011, 09h56
  4. [uicontrol] Erreur "Too many input arguments."
    Par oliv27400 dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 02/06/2010, 11h06

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