出现的问题如下:
??? Undefined command/function 'eff'.
Error in ==> getbest at 5
lbest(M+1)=eff(1,M+1);
Error in ==> main at 41
[lbest,gbest]=getbest(pop,popsize,M,lbest,gbest);
下面是计算eff的函数
function eff=evaluation(pop,popsize,M,x,y,threshold,span,vr)
eff=zeros(popsize,M+1); %初始化eff
我在另外一个evaluation.m文件中编写了如何求取eff函数,并且在main.m主程序中写了如下循环
while(t<tt)
[pop,v]=pso(pop,popsize,M,bounds,vmax,v,lbest,gbest);
eff=evaluation(pop,popsize,M,x,y,threshold,span,vr);
[lbest,gbest]=getbest(pop,popsize,M,lbest,gbest);
t=t+1;
end
为什么还是报错没有定义呢?恳请大家帮忙解答,分数不够我再加,已经困扰我好几天了
------解决方案--------------------------------------------------------
matlab的错误提示是我见过最好的了
??? Undefined command/function 'eff'.
Error in ==> getbest at 5
lbest(M+1)=eff(1,M+1);
Error in ==> main at 41
[lbest,gbest]=getbest(pop,popsize,M,lbest,gbest);
注意看,出错出在main的第41行,getbest()函数呼叫中
getbest()函数第5行有个 lbest(M+1)=eff(1,M+1);看样子是给lbest第M+1个元素赋值eff这个矩阵第一行,第M+1个元素.
问题在于,你main函数的getbest(###)呼叫时,###并没有将上一步求得的eff传递进去,
或者你getbest()函数在定义是,形参并没有一个叫做eff的变量,在第5行直接访问eff的元素就会出错.
------解决方案--------------------------------------------------------
你的问题和我之前遇到的差不多,你尝试着把eff这个函数,作为getbest函数的一个形参.是不是就不会报错了