Автоматическое обновление графика в приложении GUIDE

Примечание

Окружение GUIDE будет удаляемо в следующем релизе. После удаления GUIDE существующие приложения GUIDE будут продолжать запускаться в MATLAB® но они не будут редактироваться в GUIDE.

Чтобы продолжить редактирование существующего приложения GUIDE, смотрите GUIDE Migration Strategies для получения информации о том, как помочь поддерживать совместимость приложения с будущими релизами MATLAB. Чтобы создать новые приложения в интерактивном режиме, вместо этого Разрабатывайте приложения с использованием App Designer.

В этом примере показано, как изучить и запустить предварительно построенное приложение GUIDE. Приложение отображает объемную поверхностную диаграмму, добавляет случайный шум на поверхность и обновляет график через регулярные интервалы. Приложение содержит две кнопки: одну, которая начинает добавлять случайный шум к графику, и другую, которая перестает добавлять шум. Ползунок под графиком позволяет пользователю задать период обновления между 0,01 и 2 секундами.

Откройте и запустите пример

Откройте и запустите приложение. Переместите ползунок, чтобы установить интервал обновления между 0,01 и 2,0 секундами. Затем нажмите кнопку Start Randomizing, чтобы начать добавлять случайный шум к нанесенной на график функции. Нажмите кнопку «Остановить рандомизацию», чтобы остановить добавление шума и обновление графика.

Исследуйте Код

  1. В GUIDE нажмите кнопку Editor, чтобы просмотреть код.

  2. В верхней части окна Editor используйте кнопку Go To для перехода к функциям , описанным ниже.

ex_guide_timergui_OpeningFcn

The 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

The 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

The 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

The startbtn_Callback функция вызывает start метод timer объект, если таймер еще не запущен.

if strcmp(get(handles.timer, 'Running'), 'off')
    start(handles.timer);
end

stopbtn_Callback

The stopbtn_Callback функция вызывает stop метод timer Объект, работает ли таймер в данный момент.

if strcmp(get(handles.timer, 'Running'), 'on')
    stop(handles.timer);
end

figure1_CloseRequestFcn

The figure1_CloseRequestFcn коллбэк выполняется, когда пользователь закрывает приложение. Функция останавливает timer объект, если он работает, удаляет timer объект, а затем удаляет окно рисунка.

if strcmp(get(handles.timer, 'Running'), 'on')
    stop(handles.timer);
end
% Destroy timer
delete(handles.timer)
% Destroy figure
delete(hObject);

Похожие темы