If else Statement in GUI
9 views (last 30 days)
Show older comments
I have been using if-else statement in GUI. My program doesnot executes for 'else' i.e. it never goes for else regardless my if statement is false any one can guide??
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
a=str2double(get(handles.edit2,'string')); %%upper bound
b=str2double(get(handles.edit3,'string')); %%lower bound
d=str2double(get(handles.edit4,'string')); %%user defined error
c=(a+b)/2; %%mid point
f=get(handles.edit5,'string'); %%getting fntn as string from gui
g=vectorize(f); %% cnvrtng into fntn expression
h=inline(g);
i=h(a) %% fntn value at upper bound
j=h(b) %%fntn at lower bound
if h(a)*h(b)>0
% set(handles.edit1,'string','wrong choice');
else
err=abs(h(c));
while err>d
if h(a)*h(c)<0
b=c;
else
a=c;
end
c=(a+b)/2;
set(handles.edit1,'string',c)
end
end
3 Comments
Jan
on 4 Sep 2019
There are 2 else commands. Which one do you mean?
Prefer to separate the code for the GUI and the computations. Then you could check the computations easily by providing input arguments.
Setting the contents of the edit1 field does not change the display. Add a drawnow command to give Matlab a chance to update the screen.
Answers (1)
Jan
on 4 Sep 2019
I guess, that Matlab does exactly what it is expected to do.
If h(a)*h(b)>0 is false, Matlab enters the else branch. Although you set the value of the edit1 field there, the display is not updated, because there is no drawnow command. If you have an infinite loop, it looks like Matlab does nothing, but in is running correctly.
Consider Rik's valuable advice: Use the debugger to step trough the code line by line.
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!