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 如果尺寸(成本,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回调时出错
答案 0 :(得分:4)
您可能遇到的问题是costA
不为空,因此您的嵌套代码的 none 将被评估,变量cost
将永远不会被初始化为任何内容在你拨打专线if size(cost,1) == 1
之前。您可能想要订购nested if statements这样的内容:
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
也是。当您定义与函数同名的变量时,只要在任何计算中使用该名称,就会使用variable takes precedence代替函数。
即使cost
没有被初始化为你的条件中的任何东西,MATLAB仍然认识到可能是你函数中的一个变量,因此(在MATLAB 7或更新版本中)它不会尝试调用函数 cost
。显然,在旧版本中,如果同名变量未初始化,MATLAB将调用阴影函数。
答案 1 :(得分:-1)
看起来错误是说cost
变量是保留字。这意味着您不能将此名称用作变量。
尝试将cost
重命名为其他内容,例如finalCost
。