为什么MATLAB会抱怨它“禁止使用相同名称…作为一个功能和一个变量”?

嗨伙计们好的。我做了这个编码。但似乎有错误。任何人都可以向我解释为什么会有错误?这是编码:
Hcurve = cell2mat(get(handles.Mytable3,'Data'));
costA = cell2mat(get(handles.Mytable1,'Data'));
cost1 = str2num(get(handles.input2_editText,'String'));
cost2 = str2num(get(handles.input3_editText,'String'));
cost3 = str2num(get(handles.input4_editText,'String'));
cost4 = str2num(get(handles.input5_editText,'String'));
limit = cell2mat(get(handles.Mytable2,'Data'));
Pdt = str2num(get(handles.input1_editText,'String'));

if isempty(costA)

    if size(Hcurve,1) == 2

        H1 = Hcurve(1,:)*cost1;
        H2 = Hcurve(2,:)*cost2;
        H = num2cell([H1;H2]);
        set(handles.Mytable1,'Data',H)
        cost = cell2mat(get(handles.Mytable1,'Data'));

    else if size(Hcurve,1) == 3 

        H1 = Hcurve(1,:)*cost1;
        H2 = Hcurve(2,:)*cost2;
        H3 = Hcurve(3,:)*cost3;
        H = num2cell([H1;H2;H3]);
        set(handles.Mytable1,'Data',H)
        cost = cell2mat(get(handles.Mytable1,'Data'));

    else if size(Hcurve,1) == 4 

        H1 = Hcurve(1,:)*cost1;
        H2 = Hcurve(2,:)*cost2;
        H3 = Hcurve(3,:)*cost3;
        H4 = Hcurve(3,:)*cost4;
        H = num2cell([H1;H2;H3;H4]);
        set(handles.Mytable1,'Data',H)
        cost = cell2mat(get(handles.Mytable1,'Data'));

        else 

        cost = costA;

        end
        end
    end
end


if size(cost,1) == 1

    set(handles.text8,'String','At Lease Two Generators');
这是发生的错误: ???在编译时,“成本”被确定为变量而且这个  变量未初始化。 “cost”也是函数名称和以前的版本  MATLAB会调用该函数。  但是,MATLAB 7禁止在同一名称中使用相同的名称  上下文既是函数又是变量。 错误==> fyp_editor> Mybutton_Callback at 131     如果size(cost,1)== 1 错误= =>> gui_mainfcn at 96         feval(varargin {:}); 在==> fyp_editor 42处出错     gui_mainfcn(gui_State,varargin {:}); ==>错误 @(hObject,EVENTDATA)fyp_editor( 'Mybutton_Callback',hObject,EVENTDATA,guidata(hObject)) ???评估uicontrol回调时出错     
已邀请:
您可能遇到的问题是
costA
不是空的,因此在调用行
if size(cost,1) == 1
之前,没有任何嵌套代码被评估,变量
cost
永远不会被初始化为任何东西。您可能想要订购嵌套的if语句,如下所示:
if isempty(costA)  %# If costA is empty, compute a value for cost

  if size(Hcurve,1) == 2
  ...
  elseif size(Hcurve,1) == 3
  ...
  elseif size(Hcurve,1) == 4
  ...
  end

else
  cost = costA;  %# Will set cost equal to costA if it is not empty
end
你得到的异常错误的解释是
cost
作为变量出现在你的代码中,但似乎也有一个名为
cost
的函数。当您定义与函数同名的变量时,该变量优先,并且只要在任何计算中使用该名称,就会使用该变量而不是函数。 即使
cost
没有初始化为你的条件中的任何东西,MATLAB仍然认识到它可能是你的函数中的变量,因此(在MATLAB 7或更新版本中)它不会尝试调用函数
cost
。显然,在旧版本中,如果同名变量未初始化,MATLAB将调用阴影函数。     
看起来错误是说
cost
变量是保留字。这意味着您不能将此名称用作变量。 尝试将
cost
重命名为其他内容,例如
finalCost
。     

要回复问题请先登录注册