【问题标题】:neural network,matlab programming神经网络,matlab编程
【发布时间】:2011-06-02 04:53:10
【问题描述】:

我可以做些什么来解决我的程序中的这个错误(学习网络)?它出现在sim之后。网。

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})

【问题讨论】:

  • 是的,在我最近看到的所有错误中,没有分配“Pi”真的很重要......
  • 你自己的代码是什么样的?你是如何安装这个包的?

标签: matlab neural-network


【解决方案1】:

注意:不要落入我曾经做过的同样的陷阱。在Simulink 中还有一个名为SIM 的函数,它可能会出现在搜索Neural Network Toolbox 中的函数SIM 时...

我要检查的第一件事是第二个输入参数A{1,1} 的格式是否正确。具体来说,A{1,1} 必须是cell array 或doubles 的矩阵。如果它是任何其他形式,例如 structure 或 any other class 的矩阵,您将收到您所看到的错误。诚然,子函数simargs 不能很好地处理这个特定的错误,因为它给你一些神秘的消息,并没有真正告诉你基本问题,即你的输入格式不正确。

这里有几件事要检查:

  • 您真的是要传递元胞数组A 的第一个元素 作为输入参数,还是只是简单地传递元胞数组本身?如果是第二种选择,请执行以下操作:

    y = sim(net,A);
    
  • 如果您确实打算将A 的第一个元素作为输入参数传递,请使用函数CLASS 仔细检查它的类:

    class(A{1,1})
    

    如果您没有看到double 显示,则表示A 的第一个元素不是正确的类型。如果它是一个矩阵,你可以在将它传递给SIM之前convert it to double,如下所示:

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

【讨论】:

  • 我同意。每当它是一个抛出错误的 Matlab 内置函数时,最好确保它被正确使用。
  • @mohammad:我更新了我的答案。希望这个对您有所帮助。 ;)
猜你喜欢
  • 2015-12-03
  • 2011-08-23
  • 2011-06-12
  • 2014-01-15
  • 2010-11-20
  • 2011-07-31
  • 2014-04-09
  • 2015-07-21
  • 2012-09-19
相关资源
最近更新 更多