m0_52739434 2021-10-19 13:18 采纳率: 100%
浏览 96
已结题

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


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',此类问题如何解决

  • 写回答

4条回答 默认 最新

  • 技术专家团-Joel 2021-10-19 13:31
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 7月19日
  • 已采纳回答 7月11日
  • 修改了问题 10月19日
  • 创建了问题 10月19日

悬赏问题

  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”