2011-01-01 4 views
2

Que puis-je faire pour résoudre cette erreur dans mon programme (apprendre le net)? il apparaît après sim. le net.réseau de neurones, programmation matlab

Error in ==> network.sim>simargs at 236 
switch class(P) 

??? Output argument "Pi" (and maybe others) not assigned during call to "C:\Program 
Files\MATLAB\R2008b\toolbox\nnet\nnet\@network\sim.m>simargs". 

Error in ==> network.sim at 173 
    case 2, [err,X,Xi,Ai,T,Q,TS,matrixForm] = simargs(net,X); 

Error in ==> mlptrptest at 62 
y = sim(net,A{1,1}) 
+0

Oui, de toutes les erreurs que j'ai vu récemment ne pas avoir « Pi » attribué prend vraiment le gâteau .. –

+0

À quoi ressemble votre propre code? Comment avez-vous installé le paquet? –

Répondre

2

Note: Ne pas tomber dans le même piège que je l'ai fait. Il y a aussi une fonction appelée SIM dans Simulink qui probablement apparaître dans les recherches de la fonction SIM dans le Neural Network Toolbox ...

La première chose que je voudrais vérifier est que le deuxième argument d'entrée A{1,1} est de la forme correcte. Plus précisément, A{1,1} devrait être un cell array ou une matrice de doubles. Si c'est de n'importe quelle autre forme, comme structure ou une matrice de anyotherclass, vous obtiendrez l'erreur que vous voyez. Certes, cette erreur particulière n'est pas très bien gérée par la sous-fonction simargs, en ce qu'elle vous donne des messages cryptés qui ne vous disent pas vraiment le problème de base, c'est-à-dire que votre entrée n'est pas au bon format.

Voici deux choses à vérifier:

  • Voulez-vous dire vraiment passer le premier élément du réseau de cellules A comme argument d'entrée, ou comptez-vous simplement passer le tableau de cellule elle-même ? Si elle est la deuxième option, faire ceci:

    y = sim(net,A); 
    
  • Si vous faites signifie pour passer le premier élément de A comme argument d'entrée, double-vérifier si elle est classe en utilisant la fonction CLASS:

    class(A{1,1}) 
    

    Si vous ne voyez pas double affiché, cela signifie que le premier élément de A n'est pas du bon type. S'il est une matrice, vous pouvez convert it to double avant de passer à SIM comme ceci:

    y = sim(net,double(A{1,1})); 
    
+2

Je suis d'accord. Chaque fois qu'il s'agit d'une fonction intégrée à Matlab qui génère une erreur, il est conseillé de s'assurer qu'elle est utilisée correctement. – Jonas

+0

J'ai besoin de plus d'aide – mohammad

+0

@mohammad: J'ai mis à jour ma réponse. J'espère que celui-ci est un peu plus utile. ;) – gnovice

Questions connexes