Post on 26-Jun-2020
GUIDE Example
Pini Tandeitnik
1
ר סמדר שץ"ד: מרצה •• Email : Smadar.Shatz@biu.ac.il • Site :
https://faculty.biu.ac.il/~shatz/MatlabEng/2016/index.html
פיני טנדייטניק: מתרגל •• Email : pinit@macs.biu.ac.il • Site : http://www.eng.biu.ac.il/~pinit/MatlabCourse_2016B/ • Cellular: 050-7929-785
יוסף בקר: מתרגל •• Email: Alanbekker@gmail.com
2
בחירת פרויקטון
שבועיים לפני : (כולל השבוע של /בחירת נושא עד• )סוף הסמסטר
התירגול אחרון עדהגשת מפרט • 1/9, 1/8: תאריכי הגשה • )1/11עד ה (איטרציות 2-3: אופן ההגשה •שני . הציון הוא אישי. ניתן לעשות פרויקטון בזוגות•
. בני הזוג צריכים להפגין ידע בכל פרטי הפרויקט
3
GUI properties
Display 3 Signals with default parameters:
1. No Signal 2. A*sin(2*pi*f*t) 3. A*exp(-t/TAU)
Changing the slider or the Edit Text Box will recalculate and re-plot the function
4
User GUI (1)
5
User GUI (2)
6
User GUI (3)
7
User GUI (4)
8
User GUI (5)
9
User GUI (6)
10
User GUI (7)
11
User GUI (8)
12
GUIDE Interface
13
GUIDE Interface Commands
14
GUI Handles handles = figure1: 205.0038 FigureToolBar: 30.0040 Amp_StaticText3: 29.0040 AmpMax_StaticText2: 28.0040 AmpMin_StaticText1: 27.0040 Amp_Edit1: 26.0040 Amp_Slider1: 25.0040 SignalSelection_PopUpMenu1: 24.0043 PLOT_PushButton1: 212.0038 Display_Axes1: 206.0038 output: 205.0038 Param: [1x1 struct] fs: 10000 t: [1x1001 double] Sig2: [1x1 struct] Sig3: [1x1 struct] PopUpMenueIndex: 2 DataLine: 48.0040 MyActions: {1x3 cell}
15
GUIDE : Inspect figure
Use property Inspector without selection of any object
16
GUIDE : Inspect Axes (1)
17
GUIDE : Inspect Axes (2)
Use property Inspector After AXES object selection
18
GUIDE : Inspect PopUpMenue (1)
19
GUIDE : Inspect PopUpMenue (2)
20
GUIDE : Inspect PopUpMenue (3)
Important properties: • String • Tag
21
GUIDE : Inspect PopUpMenue (4)
22
GUIDE : Inspect PopUpMenue (5)
23
GUIDE : Inspect PopUpMenue (6)
24
GUIDE : Inspect PopUpMenue (7)
25
GUIDE : Inspect PopUpMenue (8)
26
GUIDE : Inspect PopUpMenue (9) User Define Functions
27
GUIDE : Inspect PopUpMenue (10)
In PrimerGUIDE_OpeningFcn All activated user functions have the same API (same input parameters). An Array of function handlers is used. handles.MyActions = …. {@No_WaveForm @Sin_WaveForm @Exp_WaveForm}; The Activated function depends on the value returned from The PopUpMenue (the value of handles.PopUpMenueIndex) evokes PLOT_PushButton1_Callback handles.MyActions{handles.PopUpMenueIndex}(handles,ParamValue);
28
GUIDE : User Defined Parameters (1)
29
Edit Text Slider
Static Text
GUIDE : Inspect Slider (1)
30
GUIDE : Inspect Slider (2)
Important properties: • String • Tag
31
GUIDE : Inspect Slider (3)
32
GUIDE : Inspect Slider (4)
33
GUIDE : Edit Text (1)
34
GUIDE : Edit Text (2)
35
GUIDE : Edit Text (3)
36
GUIDE : Edit Text (4)
37
GUIDE : Edit Text (5) function Amp_Edit1_Callback(hObject, eventdata, handles) % hObject handle to Amp_Edit1 (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 Amp_Edit1 as text % str2double(get(hObject,'String')) returns contents of Amp_Edit1 as a double editSliderValue = get(handles.Amp_Edit1,'String'); %convert from string to number if possible, otherwise returns empty numEditSliderValue = str2num(editSliderValue); sliderValueMin=get(handles.Amp_Slider1,'Min'); sliderValueMax=get(handles.Amp_Slider1,'Max'); if (isempty(numEditSliderValue) || sliderValueMin > numEditSliderValue || numEditSliderValue > sliderValueMax) sliderValue=get(handles.Amp_Slider1,'Value'); set(handles.Amp_Slider1,'Value',sliderValue); set(handles.Amp_Edit1,'String',num2str(sliderValue)); h1=msgbox(['Amplitude ' num2str(editSliderValue) ' is out of range'],'message','modal'); % warrning else set(handles.Amp_Slider1,'Value',numEditSliderValue); PLOT_PushButton1_Callback(hObject, eventdata, handles); end
38
GUIDE : Push Button (1)
39
GUIDE : Push Button (2)
40
GUIDE : Push Button (3)
41
GUIDE : Static Text (1)
42
GUIDE : Static Text (2)
43
GUIDE : Static Text Initialization function [y]=SliderPramInitGUI(handles,WaveFormIndex) set(handles.Amp_Edit1,'String',num2str(handles.Param.Value(WaveFormIndex))) set(handles.AmpMin_StaticText1,'Value',handles.Param.MinValue(WaveFormIndex)) set(handles.AmpMin_StaticText1,'String',num2str(handles.Param.MinValue(WaveFormIndex))) set(handles.AmpMax_StaticText2,'Value',handles.Param.MaxValue(WaveFormIndex)) set(handles.AmpMax_StaticText2,'String',num2str(handles.Param.MaxValue(WaveFormIndex))) set(handles.Amp_StaticText3,'String',handles.Param.Name(WaveFormIndex)) set(handles.Amp_Slider1,'Max',handles.Param.MaxValue(WaveFormIndex)) set(handles.Amp_Slider1,'Min',handles.Param.MinValue(WaveFormIndex)) set(handles.Amp_Slider1,'Value',handles.Param.Value(WaveFormIndex)); if WaveFormIndex==1 set(handles.Amp_Slider1,'Enable','off') set(handles.Amp_Edit1,'Enable','off') else set(handles.Amp_Slider1,'Enable','on') set(handles.Amp_Edit1,'Enable','on') end 44
function PrimerGUIDE_OpeningFcn (1)
function PrimerGUIDE_OpeningFcn(hObject, eventdata, handles, varargin) % Choose default command line output for PrimerGUIDE handles.output = hObject; % Manipulate slider Enviorment %Params: %====== % 1 - No function % 2 - Sine frequency % 3 - Exp TAU % [NU Freq TAU ] handles.Param.Value=[1 100 .02]; handles.Param.MinValue=[0 50 .002]; handles.Param.MaxValue=[2 500 .05]; handles.Param.Name={'Param.', 'Freq.' , 'TAU'};
45
function PrimerGUIDE_OpeningFcn (2)
set(hObject,'toolbar','figure'); % Add the toolbar handles.fs=10000; handles.t=(0:1:1000)/handles.fs; handles.Sig2.Amp=1; handles.Sig2.Freq=handles.Param.Value(2); % handles.Sig2.Data= @ PLOT_PushButton1_Callback handles.Sig3.Amp=1; handles.Sig3.TAU=handles.Param.Value(3); % handles.Sig3.Data= @ PLOT_PushButton1_Callback handles.PopUpMenueIndex=1; % no wave form was selrcted
46
function PrimerGUIDE_OpeningFcn (3)
% first time Initialization of the line object, % YData propery is used in the next plots cla(handles.Display_Axes1) handles.DataLine=line(handles.t,zeros(size(handles.t))); % First time plot ! xlabel('[sec]') ylabel('[Amp]') SliderPramInitGUI(handles,1); set(handles.PLOT_PushButton1,'Enable','off') set(handles.Amp_Slider1,'Enable','off') handles.MyActions = {@No_WaveForm @Sin_WaveForm @Exp_WaveForm}; % Update handles structure guidata(hObject, handles);
47
Very Important !!!!!!!!!!!!!!!!!!!!!!
תרגיל
בעל התכונות GUIDEבעזרת ה GUIכיתבו •
אשר הוצגו במצגת בתירגול
48
הגשות
בשבוע הבא יש להגיש הצעת פרויקט כתובה•
מניסיון שנים עברו תהליך אישור ההצעה לוקח • .... שתיים שלוש איטרציות
אין להתחיל בכתיבת הפרויקט המסכם ללא קבלת •
אישור בכתב על גבי הדוח המכין
49
בהצלחה בפרויקט
הסיום בקורס
50