最近用matlab编写程序时,这个错误让我郁闷了很长时间。明明写的是一个循环,第一个循环能够正常运转,而第二个循环则会报上述的错误;函数
并且单步调试运行也不会出错,只有总体运行便会报错;通过多遍仔细的检查,感受不会出现简单地索引逻辑的问题;spa
终于发现是本身在定义函数时犯了一个简单地错误:[fitness,...]=fitness(x,y,zx....),输出中fitness为矩阵形式;调试
如上,本身定义函数时,某输出变量和函数的名字是同样的,这样就会形成下一步循环时,电脑没法识别你fitness究竟是函数,仍是变量;索引
总结来看,电脑应该是把fitness当作了变量,而fitness恰好是个矩阵,这样就会把后续调用函数的过程看做fitness矩阵的变量提取过程。it
可是矩阵变量提取只能输入行和列,且必须为整数;变量
恰好输入变量都不是矩阵调用内部值的正确方法。所以会报错索引必须是正整数或逻辑变量循环
试想,若是fitness函数只有两个整数变量,那程序则能够容许,结果就会很离谱的哦,哈哈,你们多注意吧!程序
千万不要把输出变量和函数名称同样!方法
好比,max=max(A(:,1));max取A矩阵第一列的最大值;此时电脑已经没法识别你的max是啥了,电脑确定会把max当作变量,max函数已经从它的世界消失了!总结