
- •Лабораторная работа № 2 Программирование в среде системы matlab
- •1 Краткие теоретические сведения
- •1.2 Конструкции управления
- •1.3 Интерактивное взаимодействие м-функций с пользователем
- •1.4 Локальные и глобальные переменные
- •1.5 Производительность м-функций
- •1.6 Графические элементы управления
- •2. Задания для выполнения
- •2 .1 Вычисление определенных интегралов
- •2.2 Решение систем дифференциальных уравнений
- •2.3 Решение системы жестких дифференциальных уравнений
- •2.4 Использование графических элементов управления
- •2.5 Динамическая перестройка элементов управления
- •3. Контрольные вопросы
- •4. Содержание отчета
1.6 Графические элементы управления
Графические элементы управления располагаются на поверхности графических окон и позволяют вводить и читать числовую и текстовую информацию, нажатием кнопок инициировать выполнение любых функций с последующим автоматическим показом результатов вычислений на поверхности графического объекта axes того же графического окна.
Объект axes предназначен для построения графиков функций. Он содержит оси координат и белый прямоугольник, внутри которого выводится график функции.
К объектам типа uicontrol относятся командные кнопки, текстовые поля с возможностью редактирования текста и без такой возможности, переключатели, списки и др.
Все графические объекты в системе MATLAB выполнены по объектной технологии и характеризуются присущим им набором свойств. Чтобы изменить свойства графических объектов, нужно получить доступ к ним по их описателю. Описатели графического объекта возвращают функции-конструкторы, создающие эти объекты. Имена функций-конструкторов часто совпадают с именами графических объектов. Запомнив описатели в глобальных переменных, впоследствии можно получить к ним простой доступ.
Функции-конструкторы
Функция-конструктор figure создает графическое окно:
hFig= figure;
Элементы управления создаются на поверхности графического окна функцией-конструктором uicontrol, в параметрах которой по очереди перечисляются имена и значения свойств. Свойство Style задает тип управляющего элемента.
Элемент |
Свойство Style |
кнопка |
pushbutton |
редактируемое поле |
edit |
текстовое поле |
text |
флажок |
checkbox |
список |
listbox |
Свойство String задает надпись (на поверхности кнопки, в текстовом поле, в списке, подпись флажка).
Свойство Position имеет значением вектор-строку из четырех чисел и задает положение элемента относительно левого нижнего угла графического окна (первые два числа – координаты левого нижнего угла элемента; другие два числа – ширина и высота элемента).
Свойство BackgroundColor задает цвет фона (только не для кнопок).
Например, элемент управления текстовое поле создается следующей командой:
hT1= uicontrol('Style', 'text', 'Position', [500 440 90 30],…
'BackgroundColor','white', 'String','Hello');
Объект axes cоздается с помощью функции-конструктора axes. Например:
hAxes= axes('Units', 'points', 'Position', [14 40 250 300], 'FontSize',6);
Свойство FontSize определяет размер шрифта, используемого для надписей на осях координат объекта axes.
Свойство Visible может принимать значение ‘on’ или ‘off’ и служит для преодоления проблемы нехватки свободного места в графическом окне при большом количестве необходимых элементов управления (т.е. для динамической перестройки числа графических объектов и их взаимного расположения). В первом случае объект виден, во втором – нет. По умолчанию этому свойству всегда присваивается значение ‘on’. Переустановить данное свойство можно с помощью команды:
Set (hEd1,’Visible’,’off’)
Все команды, которые создают графическое окно, объект axes и элементы пользовательского интерфейса, удобно поместить в один М-файл. Описатели, возвращаемые графическими объектами следует объявить как глобальные.
Функции обработки событий
Функции, которые связываются с командными кнопками, называют сallback-функциями. Чтобы связать командную кнопку с сallback-функцией, следует при ее создании функцией-конструктором uicontrol прописать свойство 'Callback', указав ему в качестве значения имя соответствующей М-функции. Эти сallback-функции называют функциями обработки событий, связанных с элементами управления. В основном, эти функции должны опрашивать редактируемые поля (числовые данные в строковой форме), преобразовывать их в числа, после чего производить требуемые вычисления. Например:
str1 = get( hEd1, 'String');
а = str2num(str1);
С помощью функции get, указывая в качестве первого аргумента описатель редактируемого поля, получаем значение свойства 'String', т.е. текстовое содержимое этого поля, которое вводится пользователем с клавиатуры. Функция str2num преобразовывает текстовые величины в числа.
Функция cla стирает содержимое текущего (активного) графического окна объекта axes. Предварительный вызов функции axes(описатель) позволяет гарантировать, что будет стерто содержимое именно этого графического объекта. Такой вызов делает активным объект, описатель которого указан в качестве параметра.