为什么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回调时出错
没有找到相关结果
已邀请:
2 个回复
乏摩纶誊伟
不是空的,因此在调用行
之前,没有任何嵌套代码被评估,变量
永远不会被初始化为任何东西。您可能想要订购嵌套的if语句,如下所示:
你得到的异常错误的解释是
作为变量出现在你的代码中,但似乎也有一个名为
的函数。当您定义与函数同名的变量时,该变量优先,并且只要在任何计算中使用该名称,就会使用该变量而不是函数。 即使
没有初始化为你的条件中的任何东西,MATLAB仍然认识到它可能是你的函数中的变量,因此(在MATLAB 7或更新版本中)它不会尝试调用函数
。显然,在旧版本中,如果同名变量未初始化,MATLAB将调用阴影函数。
粳饶瓢部
变量是保留字。这意味着您不能将此名称用作变量。 尝试将
重命名为其他内容,例如
。