Hye guys. Okay. I have done this coding. But it seems have error. Can anyone explain to me why there is an error? This is the coding:
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');
This is the error occured:
??? At compilation, “cost” was determined to be a variable and this
variable is uninitialized. “cost” is also a function name and previous versions
of MATLAB would have called the function.
However, MATLAB 7 forbids the use of the same name in the same
context as both a function and a variable.
Error in ==> fyp_editor>Mybutton_Callback at 131
if size(cost,1) == 1
Error in ==> gui_mainfcn at 96
feval(varargin{:});
Error in ==> fyp_editor at 42
gui_mainfcn(gui_State, varargin{:});
Error in ==>
@(hObject,eventdata)fyp_editor(‘Mybutton_Callback’,hObject,eventdata,guidata(hObject))
??? Error while evaluating uicontrol Callback
The likely problem you’re having is that
costAis not empty, so none of your nested code gets evaluated and the variablecostwill never be initialized to anything before you call the lineif size(cost,1) == 1. You probably want to order your nested if statements something like this:The explanation for the unusual error you’re getting is that
costappears in your code as a variable, but there appears to be a function with the namecostas well. When you define a variable with the same name as a function, the variable takes precedence and will be used instead of the function whenever that name is used in any computations.Even though
costdoesn’t get initialized to anything in your condition, MATLAB still recognizes that it could be a variable in your function and thus (in MATLAB 7 or newer) it doesn’t try to call the functioncost. Apparently, in older versions MATLAB would call the shadowed function in the event that a variable by the same name is uninitialized.