首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 其他开发语言 >

matlab 函数有关问题

2012-12-30 
matlab 函数问题出现的问题如下:??? Undefined command/function eff.Error in getbest at 5 lbest(

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函数的一个形参.是不是就不会报错了

热点排行