MATLAB Answers

If else Statement in GUI

21 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
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');
while err>d
if h(a)*h(c)<0


Rik on 4 Sep 2019
Have you tried using the debugger to go through your code step by step? That way you can check what the values of your variables are at runtime.
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 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.