Примечание
Среда GUIDE будет удалена в следующей версии. После удаления GUIDE существующие приложения GUIDE будут продолжать работать в MATLAB ®, но они не будут редактироваться в GUIDE.
Чтобы продолжить редактирование существующего приложения GUIDE, см. раздел Стратегии миграции GUIDE для получения информации о том, как поддерживать совместимость приложения с будущими выпусками MATLAB. Чтобы создать новые приложения в интерактивном режиме, разработайте приложения с помощью App Designer.
В этом примере показано, как проверить и запустить предустановленное приложение GUIDE. Приложение содержит три поля редактирования и две оси. Оси отображают представление частоты и временной области функции, которая является суммой двух синусоидальных волн. Два верхних поля редактирования содержат частоту для каждого компонента синусоидальной волны. Третье поле редактирования содержит временной диапазон и частоту выборки для графиков.
Откройте и запустите приложение. Измените значения по умолчанию в полях f1 и f2, чтобы изменить частоту для каждого компонента синусоидальной волны. Можно также изменить три числа (разделенные двоеточиями) в поле t. Первое и последнее числа определяют окно времени для выборки функции. Среднее число определяет частоту дискретизации.
Нажмите кнопку Plot для просмотра графика функции в частотной и временной областях.

В GUIDE нажмите кнопку «Редактор
» для просмотра кода.
В верхней части окна «Редактор» используйте
кнопку «Перейти к» для перехода к функциям
, описанным
ниже.
f1_input_Callback и f2_input_Callback f1_input_Callback функция выполняется при изменении пользователем значения в поле редактирования f1. f2_input_Callback функция реагирует на изменения в поле f2, и она почти идентична f1_input_Callback функция. Обе функции проверяют правильность ввода данных пользователем. Если в поле редактирования указано недопустимое значение, кнопка «Печать» отключена. Вот код для f1_input_Callback функция.
f1 = str2double(get(hObject,'String')); if isnan(f1) || ~isreal(f1) % Disable the Plot button and change its string to say why set(handles.plot_button,'String','Cannot plot f1'); set(handles.plot_button,'Enable','off'); % Give the edit text box focus so user can correct the error uicontrol(hObject); else % Enable the Plot button with its original name set(handles.plot_button,'String','Plot'); set(handles.plot_button,'Enable','on'); end
t_input_Callback t_input_Callback функция выполняется при изменении пользователем значения в поле t edit. Это try блок проверяет значение, чтобы убедиться, что оно числовое, что его длина находится в диапазоне от 2 до 1000 и что вектор монотонно увеличивается.
try t = eval(get(handles.t_input,'String')); if ~isnumeric(t) % t is not a number set(handles.plot_button,'String','t is not numeric') elseif length(t) < 2 % t is not a vector set(handles.plot_button,'String','t must be vector') elseif length(t) > 1000 % t is too long a vector to plot clearly set(handles.plot_button,'String','t is too long') elseif min(diff(t)) < 0 % t is not monotonically increasing set(handles.plot_button,'String','t must increase') else % Enable the Plot button with its original name set(handles.plot_button,'String','Plot') set(handles.plot_button,'Enable','on') return end catch EM % Cannot evaluate expression user typed set(handles.plot_button,'String','Cannot plot t'); uicontrol(hObject); end
catch блок изменяет метку на кнопке «Печать», указывая, что введенное значение является недопустимым. uicontrol устанавливает фокус на поле, содержащее ошибочное значение.plot_button_Callback plot_button_Callback функция выполняется, когда пользователь нажимает кнопку Plot.
Сначала обратный вызов получает значения в трех полях редактирования:
f1 = str2double(get(handles.f1_input,'String')); f2 = str2double(get(handles.f2_input,'String')); t = eval(get(handles.t_input,'String'));
f1, f2, и t для выборки функции во временной области и вычисления преобразования Фурье. Затем обновляются два графика:
% Create frequency plot in proper axes plot(handles.frequency_axes,f,m(1:257)); set(handles.frequency_axes,'XMinorTick','on'); grid(handles.frequency_axes,'on'); % Create time plot in proper axes plot(handles.time_axes,t,x); set(handles.time_axes,'XMinorTick','on'); grid on