Этот пример показывает, как исследовать и запустить предварительно созданное приложение GUIDE. Отображения приложения объемная поверхностная диаграмма, добавляет случайный шум к поверхности и обновляет график равномерно. Приложение содержит две кнопки: тот, который начинает добавлять случайный шум к графику и другому, который прекращает добавлять шум. Ползунок ниже графика позволяет пользователю устанавливать период обновления между 0,01 и 2 секундами.
Открытый и выполнение приложение. Переместите ползунок, чтобы установить интервал обновления между 0,01 и 2,0 секундами. Затем нажмите кнопку Start Randomizing, чтобы начать добавлять случайный шум к нанесенной на график функции. Нажмите кнопку Stop Randomizing, чтобы прекратить добавлять шум и обновлять график.
В GUIDE нажмите кнопку Editor, чтобы просмотреть код.
Около верхней части окна Editor используйте кнопку Go To, чтобы перейти к функциям, обсужденным ниже.
ex_guide_timergui_OpeningFcn
Функция ex_guide_timergui_OpeningFcn
выполняется, когда приложение открывает и начинает запускаться. Эта команда создает объект timer
и хранит его в структуре handles
.
handles.timer = timer(... 'ExecutionMode', 'fixedRate', ... % Run timer repeatedly. 'Period', 1, ... % Initial period is 1 sec. 'TimerFcn', {@update_display,hObject}); % Specify callback function.
update_display
, который задан как локальная функция.update_display
Функция update_display
выполняется, когда заданный период timer
протекает. Функция получает значения в свойстве ZData
объекта Surface
и добавляет случайный шум к нему. Затем это обновляет график.
handles = guidata(hfigure); Z = get(handles.surf,'ZData'); Z = Z + 0.1*randn(size(Z)); set(handles.surf,'ZData',Z);
periodsldr_Callback
Функция periodsldr_Callback
выполняется, когда пользователь перемещает ползунок. Это вычисляет период таймера путем получения значения ползунка и усечения его. Затем это обновляет метку ниже ползунка и обновляет период объекта timer
.
% Read the slider value period = get(handles.periodsldr,'Value'); % Truncate the value returned by the slider. period = period - mod(period,.01); % Set slider readout to show its value. set(handles.slidervalue,'String',num2str(period)) % If timer is on, stop it, reset the period, and start it again. if strcmp(get(handles.timer, 'Running'), 'on') stop(handles.timer); set(handles.timer,'Period',period) start(handles.timer) else % If timer is stopped, reset its period. set(handles.timer,'Period',period) end
startbtn_Callback
Вызовы функции startbtn_Callback
метод start
объекта timer
, если таймер уже не запускается.
if strcmp(get(handles.timer, 'Running'), 'off') start(handles.timer); end
stopbtn_Callback
Вызовы функции stopbtn_Callback
метод stop
объекта timer
, если таймер в настоящее время запускается.
if strcmp(get(handles.timer, 'Running'), 'on') stop(handles.timer); end
figure1_CloseRequestFcn
Обратный вызов figure1_CloseRequestFcn
выполняется, когда пользователь закрывает приложение. Функция останавливает объект timer
, если это запускает, удаляет объект timer
, и затем удаляет окно фигуры.
if strcmp(get(handles.timer, 'Running'), 'on') stop(handles.timer); end % Destroy timer delete(handles.timer) % Destroy figure delete(hObject);