Matlab GUI - Pushbutton internal IF condition semi-not functional
Show older comments
Hey Experts,
I got a problem with a GUI I am designing. I am writing some IF-ELSE IF statements inside the button as a check-condition for different increments. The relevant code can be found below.
function Simulate_Callback(hObject, eventdata, handles)
DP = str2double(get(handles.dummy, 'String'));
if (DP/handles.testdata.actualDP)*100 >=60
down =1;
elseif (DPrice/handles.testdata.actualDP)*100 < 60 && ...
(DPrice/handles.testdata.actualDP)*100 > 50
down = 0.5;
else
down = 0.05;
end
newString = sprintf('%d', int32(DP -down));
set(handles.dummy,'String',newString)
Initial value of DP is 100 and while is going down to 59 as it was supposed to (down=1), It looks like that handles.dummy does not update after that point and is stack on 59.
Any ideas guys? I can't get my mind around it.
Thanks a lot for your help! :)
Accepted Answer
More Answers (1)
Image Analyst
on 25 Dec 2012
0 votes
Because you're setting a control inside the function and exepcting to get it back out on a later run, you need to call guidata() to update the handles structure.
5 Comments
Walter Roberson
on 25 Dec 2012
No, that only applies if you change what handles.dummy refers to, such as
handles.dummy = 17;
Qfin
on 25 Dec 2012
Qfin
on 25 Dec 2012
NICOLE MIN
on 30 Apr 2021
i have an issue with my code and i cant get the function out with the radiobutton selected by designing the if else rule statement. please help!!!!
function varargout = untitled1(varargin)
% UNTITLED1 MATLAB code for untitled1.fig
% UNTITLED1, by itself, creates a new UNTITLED1 or raises the existing
% singleton*.
%
% H = UNTITLED1 returns the handle to a new UNTITLED1 or the handle to
% the existing singleton*.
%
% UNTITLED1('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in UNTITLED1.M with the given input arguments.
%
% UNTITLED1('Property','Value',...) creates a new UNTITLED1 or raises
% the existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before untitled1_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to untitled1_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help untitled1
% Last Modified by GUIDE v2.5 30-Apr-2021 18:04:40
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @untitled1_OpeningFcn, ...
'gui_OutputFcn', @untitled1_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before untitled1 is made visible.
function untitled1_OpeningFcn(hObject, ~, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to untitled1 (see VARARGIN)
% Choose default command line output for untitled1
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
initialize_gui(hObject, handles, false);
% UIWAIT makes untitled1 wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = untitled1_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes during object creation, after setting all properties.
function Glucose_CreateFcn(hObject, eventdata, handles)
% hObject handle to Glucose (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function Glucose_Callback(hObject, eventdata, handles)
% hObject handle to Glucose (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of Glucose as text
% str2double(get(hObject,'String')) returns contents of Glucose as a double
Glucose = str2double(get(hObject, 'String'));
if isnan(Glucose)
set(hObject, 'String',0);
errordlg('Input must be a number','Error');
end
% Save the new Glucose value
handles.metricdata.Glucose = Glucose;
guidata(hObject,handles)
% --- Executes during object creation, after setting all properties.
function BMI_CreateFcn(hObject, eventdata, handles)
% hObject handle to BMI (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function BMI_Callback(hObject, eventdata, handles)
% hObject handle to BMI (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of BMI as text
% str2double(get(hObject,'String')) returns contents of BMI as a double
BMI = str2double(get(hObject, 'String'));
if isnan(BMI)
set(hObject, 'String',0);
errordlg('Input must be a number','Error');
end
% Save the new BMI value
handles.metricdata.BMI = BMI;
guidata(hObject,handles)
% --- Executes on button press in reset.
function reset_Callback(hObject, eventdata, handles)
% hObject handle to reset (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
initialize_gui(gcbf, handles, true);
% --- Executes when selected object changed in unitgroup.
function unitgroup_SelectionChangedFcn(hObject, eventdata, handles)
% hObject handle to the selected object in unitgroup
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if (hObject == handles.Female)
set(handles.text4, 'String', 'mg/dl');
set(handles.text5, 'String', 'kg/m^2');
set(handles.text11, 'String', 'mmHg');
else
set(handles.text4, 'String', 'mg/dl');
set(handles.text5, 'String', 'kg/m^2');
set(handles.text11, 'String', 'mmHg');
end
if (hObject == handles.Male)
set(handles.text4, 'String', 'mg/dl');
set(handles.text5, 'String', 'kg/m^2');
set(handles.text11, 'String', 'mmHg');
else
set(handles.text4, 'String', 'mg/dl');
set(handles.text5, 'String', 'kg/m^2');
set(handles.text11, 'String', 'mmHg');
if (hObject == handles.Pregnancies)
set(handles.text4, 'String', 'mg/dl');
set(handles.text5, 'String', 'kg/m^2');
set(handles.text11, 'String', 'mmHg');
else
set(handles.text4, 'String', 'mg/dl');
set(handles.text5, 'String', 'kg/m^2');
set(handles.text11, 'String', 'mmHg');
end
end
% ------------------------------------------------
function initialize_gui(fig_handle, handles, isreset)
% If the metricdata field is present and the reset flag is false, it means
% we are we are just re-initializing a GUI by calling it from the cmd line
% while it is up. So, bail out as we dont want to reset the data.
if isfield(handles, 'metricdata') && ~isreset
return;
end
handles.metricdata.Glucose =0;
handles.metricdata.BMI = 0;
handles.metricdata.Age = 0;
handles.metricdata.sysBP =0;
handles.metricdata.diaBP =0;
set(handles.Glucose, 'String', handles.metricdata.Glucose);
set(handles.BMI, 'String', handles.metricdata.BMI);
set(handles.sysBP, 'String',handles.metricdata.sysBP);
set(handles.diaBP, 'String',handles.metricdata.diaBP);
set(handles.Age, 'String',handles.metricdata.Age);
set(handles.unitgroup, 'SelectedObject', handles.Female);
set(handles.unitgroup, 'SelectedObject', handles.Male);
set(handles.unitgroup, 'SelectedObject', handles.Pregnancies);
set(handles.unitgroup, 'SelectedObject', handles.mmolConverter);
set(handles.text4, 'String', 'mg/dl');
set(handles.text5, 'String', 'kg/m^2');
set(handles.text11, 'String', 'mmHg');
% Update handles structure
guidata(handles.figure1, handles);
function Age_Callback(hObject, eventdata, handles)
% hObject handle to Age (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of Age as text
% str2double(get(hObject,'String')) returns contents of Age as a double
Age = str2double(get(hObject, 'String'));
if isnan(Age)
set(hObject, 'String', 0);
errordlg('Input must be a number','Error');
end
% Save the new BMI value
handles.metricdata.Age = Age;
guidata(hObject,handles)
% --- Executes during object creation, after setting all properties.
function Age_CreateFcn(hObject, eventdata, handles)
% hObject handle to Age (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function sysBP_Callback(hObject, eventdata, handles)
% hObject handle to sysBP (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of sysBP as text
% str2double(get(hObject,'String')) returns contents of sysBP as a double
sysBP = str2double(get(hObject, 'String'));
if isnan(sysBP)
set(hObject, 'String',0);
errordlg('Input must be a number','Error');
end
% Save the new Glucose value
handles.metricdata.sysBP = sysBP;
guidata(hObject,handles)
function sysBP_CreateFcn(hObject, eventdata, handles)
% hObject handle to sysBP (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function diaBP_Callback(hObject, eventdata, handles)
% hObject handle to sysBP (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of sysBP as text
% str2double(get(hObject,'String')) returns contents of sysBP as a double
diaBP= str2double(get(hObject, 'String'));
if isnan(diaBP)
set(hObject, 'String',0);
errordlg('Input must be a number','Error');
end
% --- Executes during object creation, after setting all properties.
function diaBP_CreateFcn(hObject, eventdata, handles)
% hObject handle to sysBP (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in Calculate.
function Calculate_Callback(hObject, eventdata, handles)
% hObject handle to Calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
mmolConverter = handles.metricdata.Glucose/18;
set(handles.Calculate, 'String', mmolConverter);
% --- Executes during object creation, after setting all properties.
function Calculate_CreateFcn(hObject, eventdata, handles)
% hObject handle to Calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% --- Executes during object creation, after setting all properties.
function unitgroup_CreateFcn(hObject, eventdata, handles)
% hObject handle to Calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% --- Executes during object creation, after setting all properties.
function Female_CreateFcn(hObject, eventdata, handles)
% hObject handle to Calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% --- Executes during object creation, after setting all properties.
% --- Executes on button press in Pregnancies.
function Female_Callback(hObject, eventdata, handles)
% hObject handle to Calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
high_glucose =350;
low_glucose=0;
mean_Glucosefeat=121;
input_fuzzy_glucose=175;
high_BMI=60;
low_BMI=0;
mean_BMI=39;
input_fuzzy_BMI=30;
max_rule1=175;
max_use1=350;
max_rule2=30;
max_use2=60;
before_meal=95;
number1= str2double(set(handles.Glucose, 'String',handles.metricdata.Glucose));
number2 = str2double(set(handles.BMI,'String',handles.metricdata.BMI));
number3=str2double(set(handles.Age,'String',handles.metricdata.Age));
number4=str2double(set(handles.sysBP,'String',handles.metricdata.sysBP));
number5=str2double(set(handles.diaBP,'String',handles.metricdata.diaBP));
%%%%plot Predict Button if women selection button (Predict Button)
%%%%%%for women
%%% 'case1'
if (number1<=max_rule1 && number2<max_rule2 && number2<35 && number4<=113 && number5>=71)
msgbox('low risk ')
elseif (number1>max_rule1 && number2==max_rule2 && number3>35 && number3<50 && number4>113 && number5<=73)
msgbox('medium risk ')
elseif (number1<=max_rule1 && number2 >=max_rule2 && number3>51 && number3>=60 && number4<=113 && number5<=71)
msgbox('medium risk ')
elseif(number1>=max_rule1 && number2<=max_rule2 && number3>51 && number3>=60 && number4<=127 && number5<=76)
msgbox(' risky ')
elseif(number1 <=max_rule1 && number2>=max_rule2 && number3>51 && number3>=60 && number4>=127 && number5>=76)
msgbox('risky')
elseif (number1 >max_rule1 && number2>=max_rule2 && number3>31&& number3<50 && number4>=113 && number5>=73)
msgbox('risky')
elseif(number1==max_rule1 && number2<max_rule2 && number3<35 && number4<=113 && number5<=71)
msgbox('risky')
elseif (number1 >max_rule1 && number2>=max_rule2 && number3>35 && number3<50 && number4>=113 && number5>73)
msgbox('risky')
elseif (number1>max_use1 && number2>max_use2 && number3>51 && number3>=60 &&number4<=127 && number5<=76)
msgbox('high risk')
elseif(number1 >max_rule1 && number2>max_use2 && number3>35 && number3<50 && number4>=127 && number5>=76)
msgbox('high risk')
elseif (number1 <max_rule1 && number2<max_rule2 && number4<=113 && number5<=71)
msgbox('no risk')
elseif(number1 >207 && number2>60)
msgbox('danger')
end
set(handles.Pregnancies,'Visible','on')
set(handles.Female,'Enable','on')
set(handles.Pregnancies,'Enable','on')
set(handles.Female,'Visible','on')
set(handles.Male,'Enable','on')
set(handles.Male,'Visible','on')
set(handles.Calculate,'Enable','on')
% --- Executes during object creation, after setting all properties.
function Female_DeleteFcn(hObject, eventdata, handles)
% hObject handle to Calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% --- Executes during object creation, after setting all properties.
% --- Executes during object creation, after setting all properties.
function Pregnancies_CreateFcn(hObject, eventdata, handles)
% hObject handle to Calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes during object creation, after setting all properties.
% --- Executes on button press in Pregnancies.
function Pregnancies_Callback(hObject, eventdata, handles)
% hObject handle to Calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
high_glucose =350;
low_glucose=0;
mean_Glucosefeat=121;
input_fuzzy_glucose=175;
high_BMI=60;
low_BMI=0;
mean_BMI=39;
input_fuzzy_BMI=30;
max_rule1=175;
max_use1=350;
max_rule2=30;
max_use2=60;
before_meal=95;
number1= str2double(set(handles.Glucose, 'String',handles.metricdata.Glucose));
number2 = str2double(set(handles.BMI,'String',handles.metricdata.BMI));
number3=str2double(set(handles.Age,'String',handles.metricdata.Age));
number4=str2double(set(handles.sysBP,'String',handles.metricdata.sysBP));
number5=str2double(set(handles.diaBP,'String',handles.metricdata.diaBP));
if(number1>=before_meal && number1>mean_Glucosefeat && number2>=max_rule2)
msgbox('high risk of diabetic')
elseif (number1<before_meal && number1<=mean_Glucosefeat && number2<max_rule2)
msgbox('normal');
elseif(number1<before_meal && number1<=mean_Glucosefeat && number2<max_rule2)
msgbox('danger');
end
set(handles.Pregnancies,'Enable','on')
set(handles.Female,'Enable','on')
set(handles.Male,'Enable','on')
set(handles.Pregnancies,'Visible','on')
set(handles.Female,'Visible','on')
set(handles.Male,'Visible','on')
set(handles.Calculate,'Enable','on')
% --- Executes during object creation, after setting all properties.
function Pregnancies_DeleteFcn(hObject, eventdata, handles)
% hObject handle to Calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% --- Executes during object creation, after setting all properties.
% --- Executes during object creation, after setting all properties.
function Male_CreateFcn(hObject, eventdata, handles)
% hObject handle to Calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in Pregnancies.
function Male_Callback(hObject, eventdata, handles)
% hObject handle to Calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
high_glucose =350;
low_glucose=0;
mean_Glucosefeat=121;
input_fuzzy_glucose=175;
high_BMI=60;
low_BMI=0;
mean_BMI=39;
input_fuzzy_BMI=30;
max_rule1=175;
max_use1=350;
max_rule2=30;
max_use2=60;
before_meal=95;
number1= str2double(set(handles.Glucose, 'String',handles.metricdata.Glucose));
number2 = str2double(set(handles.BMI,'String',handles.metricdata.BMI));
number3=str2double(set(handles.Age,'String',handles.metricdata.Age));
number4=str2double(set(handles.sysBP,'String',handles.metricdata.sysBP));
number5=str2double(set(handles.diaBP,'String',handles.metricdata.diaBP));
%%%%%age and BP chart is base on the tpical measurement chage by age group
%%%%%found online
%%%%plot Predict Button if men selection button (Predict Button
%%%%%%for men
if (number1<=max_rule1 && number2 <max_rule2 && number3<35 && number4<=117.5 && number5>=77)
msgbox('low risk ')
elseif (number1==max_rule1 && number2>=max_rule2 && number3>35 && number3<50 && number4==117.5 && number5==77)
msgbox('medium risk ')
elseif (number1>=max_rule1 && number2==max_rule2 && number3>51 && number3>=60 && number4<=117.5 && number5==78)
msgbox('medium risk ')
elseif(number1 >=max_rule1 && number2==max_rule2 && number3>51 && number3>=60 && number4>=118 && number5<=78)
msgbox(' risky ')
elseif(number1 >max_rule1 && number2>max_rule2 && number3>51 && number3>=60 && number4<=118 && number5<=78)
msgbox('risky')
elseif (number1 <=max_rule1 && number2<=max_rule2 && number3>31&& number3<50 && number4>=118 && number5<=78)
msgbox('risky')
elseif(number1 <=max_rule1 && number2>=max_rule2 && number3<51 && number3>=60 && number4<=117.5 && number5>=77)
msgbox('risky')
elseif (number1 >max_rule1 && number2>=max_rule2 && number3>35 && number3<50 && number4>=117.5 && number5>77)
msgbox('risky')
elseif (number1>max_use1 && number2>max_use2 && number3>51 && number3>=60 &&number4<=127 && number5<=76)
msgbox('high risk')
elseif(number1 >max_rule1 && number2>max_use2 && number3>35 && number3<50 && umber4>=127 && number5>=76)
msgbox('high risk')
elseif (number1 <max_rule1 && number2<max_rule2 && number4<=117.5 && number5<=77)
msgbox('no risk')
elseif(number1 >207 && number2>60)
msgbox('danger')
end
set(handles.Pregnancies,'Enable','off')
set(handles.Female,'Enable','off')
set(handles.Pregnancies,'Visible','on')
set(handles.Female,'Visible','on')
set(handles.Male,'Enable','on')
set(handles.Calculate,'Enable','on')
% --- Executes during object creation, after setting all properties.
function Male_DeleteFcn(hObject, eventdata, handles)
% hObject handle to Calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% --- Executes during object creation, after setting all properties.
Image Analyst
on 30 Apr 2021
Attach the fig file ane m-file with the paperclip icon.
Categories
Find more on Graphics Object Properties in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!