当前位置: 代码迷 >> 其他开发语言 >> matlab 函数有关问题
  详细解决方案

matlab 函数有关问题

热度:7475   发布时间:2013-02-26 00:00:00.0
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);

下面是计算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函数的一个形参.是不是就不会报错了
  相关解决方案