If else Statement in GUI

9 views (last 30 days)
Muhammad Salman Arif
Muhammad Salman Arif on 4 Sep 2019
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
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.
Muhammad Salman Arif
Muhammad Salman Arif on 5 Sep 2019
its working good but I need to terminate the program to get the answer. otherwise it keeps on working and show nothing. I have also tried to minimize the accuracy limit in the while loop

Sign in to comment.

Answers (1)

Jan
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.
  1 Comment
Muhammad Salman Arif
Muhammad Salman Arif on 5 Sep 2019
edit1 value should only be updated if h(a)*h(b)>0 is true. am I right?

Sign in to comment.

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!