2011-01-01 3 views
2

что я могу сделать, чтобы решить эту ошибку в моей программе (изучая сеть)? он появляется после сим. сеть.нейронная сеть, программирование 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

Да, из всех ошибок, которые я видел в последнее время, не имея «Пи», назначенный действительно берет пирог .. –

+0

Как выглядит ваш собственный код? Как вы установили пакет? –

ответ

2

Примечание: Не попадают в ту же ловушку, я сделал. Существует также функция, называемая SIM в Simulink, что, скорее всего, отображаться в поиске для функции SIM в Neural Network Toolbox ...

Первое, что я хотел бы проверить, что второй входной аргумент A{1,1} является правильной формы. В частности, A{1,1} должен быть cell array или матрицей doubles. Если он имеет любую другую форму, например structure или матрицу anyotherclass, вы получите сообщение об ошибке, которое вы видите. По общему признанию, эта конкретная ошибка не очень хорошо обрабатывается подфункцией simargs, поскольку она дает вам некоторые критические сообщения, которые на самом деле не говорят вам об основной проблеме, которая заключается в том, что ваш вход не в правильном формате.

Вот несколько вещей, чтобы проверить:

  • ли вы на самом деле означает передать первый элемент из массива ячеек A в качестве входного аргумента, или вы имеете в виду, чтобы просто передать сам массив ячеек ? Если это второй вариант, просто сделать это:

    y = sim(net,A); 
    
  • Если вы сделать значит пройти первый элемент A в качестве входного аргумента, перепроверить это класс с помощью функции CLASS:

    class(A{1,1}) 
    

    Если вы не видите double, значит, первый элемент A - неправильный тип. Если это матрица, вы можете convert it to double, прежде чем передать его SIM так:

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

Согласен. Всякий раз, когда это встроенная функция Matlab, которая вызывает ошибку, рекомендуется убедиться, что она используется должным образом. – Jonas

+0

Мне нужна дополнительная помощь – mohammad

+0

@mohammad: Я обновил свой ответ. Надеюсь, что это немного более полезно. ;) – gnovice

Смежные вопросы