对于未定义函数或变量此类问题如何解决


T=8760;%时间范围
global P_S;
P_S=load('P_S.txt');%光照强度
global P_T;
P_T=load('P_T.txt');%温度
global E1;
E1=load('load.txt');%一年负荷序列
P_T1=P_T+P_S*160;
a=1+0.00485*(P_T-25);
b=a/200;
pv=2300*0.05*0.9*P_S.*b;%太阳能一年发出的电量
P_MT1=300;%微型汽轮机装机容量
P_MT=0.81*P_MT1;%微型汽轮机出力
yitac=0.9;%逆变器功率转换效率
yitab=0.9;%蓄电池效率
yitacc=0.6;%电解槽工作效率
yitacd=0.5;%储氢罐工作效率
yitact=0.6;%燃料电池工作效率
Ebn=0.9*pop(1);%蓄电池
Ebmin=0.2*pop(1);%蓄电池约束条件
Ecn=0.27*pop(2);%储氢罐
Ecmin=0.054*pop(2);%储氢罐约束条件
delE=pv+P_MT1-E1;%功率缺额(发电量-负荷)

for k=1:T
    if delE(k)>0 %功率剩余
        if delE >= Ebn*yitac
            Eb=Ebp+Ebn*yitabc;
            if Eb>Ebn
                Eb=Ebn;
            end
        elseif delE >= Ebn*yitac+Ecn
            Eb=Ebn;
            Ecc=delE-Ebn;
            if Ecc>Ecn
                Ec=Ecn;
                Efire=(Ecc-Ecn)*0.9*0.99;
            else
                Ec=Ecp+Ecc*0.6*yitac;
            end
        end
         Eb=Eb(k-1);
         Ec=Ec(k-1); 
    else
        delE(k)=-1*delE(k);%功率缺额
         if delE >= Ebn*yitac
            Eb=Ebp-Ebn*yitabc;
            if Eb<Ebmin
                Eb=Ebmin;
            end
        elseif delE >= Ebn*yitac+Ecn
            Eb=Ebmin;
            Ecc=delE-Ebmin;
            if Ecc<Ecmin
                Ec=Ecmin;
                Elps=Ecc-Ecmin;
            else
                Ec=Ecp-Ecc;
            end
         end
         Eb=Eb(k-1);
         Ec=Ec(k-1);
         Elps=Elps;
    end
end

y=6565.12064*pop(1)+31457.883*pop(2);
if 0.72*pop(1) + 0.081*pop(2) < max(E1)*0.7
    y=y+inf;
end

for k=1:T   
if Eb(k)>0.7*delE(k)
      y=y+inf;
end
end
  
LPSP=Elps/sum(E1);
if LPSP> 0.05
   y=y+inf;
end
LPSP

请问,为啥matlab上一直显示62行未定义函数或变量 'Eb',此类问题如何解决

你好,同学!
仔细看了你的代码,如果你的代码运行到了62行,说明是第45行的else是满足的。
然后从第47行的if逻辑开始看,你的if逻辑下面包含了两个工况即
(1)第47行的delE >= Ebn*yitac
(2)第52行的delE >= Ebn*yitac+Ecn
这两种情况你都定义了Eb
但是明显可见delE还存在第三种情况,即delE < Ebn*yitac,这种情况你需要再加一个else说明一下Eb是怎么取值的就可以啦。
希望我的回答能够对你有所帮助,满意还请点各个采纳支持一下答主哦

报错窗口如下:
未定义函数或变量 'Eb'。

出错 Untitled_1 (line 62)
Eb=Eb(k-1);

出错 PSO_R (line 25)
fitness(i)=Untitled_1(pop(i,:)); %Ⱦɫ�����Ӧ��

你好,刚开始入门,我想学习一下你的代码,可以发一下你的代码吗?感谢感谢!!980725855@qq.com

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632