Руководства, Инструкции, Бланки

Matlab Gui руководство

Рейтинг: 4.3/5.0 (258 проголосовавших)

Категория: Руководства

Описание

4 лекция Матлаб (Создание графических приложений)

/ План семестра поурочный по ВычМат-2014 / Занятие-13-Графический-Интерфейс / 4 лекция Матлаб (Создание графических приложений)

МАТЛАБ. СОЗДАНИЕ ГРАФИЧЕСКИХ ПРИЛОЖЕНИЙ.

Графические объекты. Графические приложения содержат меню, кнопки, области ввода текста, переключатели, графики.

Указатель на объект. Элементы, из которых состоят графические приложения, являются объектами. Указатель это переменная, в которой хранится адрес (в памяти компьютера) объекта. Пользователь пользуется указателями, как переменными. То есть для совершения действия над элементом графики, пользователь в соответствующей команде указывает имя переменной, означающей данный элемент графики (указатель на данный графический элемент).

Для получения указателей есть функции: gcf возвращает указатель в графическое окно, gca возвращает указатель на оси координат, gco возвращает указатель на графический объект.

Свойства графических объектов. Для установки свойств объектов есть функция set(указатель_на_объект, ‘изменяемое_свойство’, ‘его_новое_значение’, ‘изменяемое_свойство_2’, ‘его_новое_значение_2’).

Для получения свойств объекта есть функция get(указатель_на_объект, ‘свойство’).

Создание программ с визуальным интерфейсом. В окне Command Window следует набрать guide и тогда откроется окно для создания визуального интерфейса.

В нем можно выбрать как уже существующие (Open Existing GUI) так и создание нового интерфейса. Для этого предлагаются несколько наиболее распространенных типовых заготовок, а также возможность создать вообще сначала весь интерфейс (Blank GUI Default).

Для примера создадим вариант интерфейса. Он предназначен для ввода нескольких исходных величин (аргументов) и вычисления нескольких интересующих пользователя ответов (результатов или, иначе говоря, функций от введенных аргументов). Также предусмотрено построение графика какой-либо функции от какой-либо переменной по усмотрению пользователя, указывающего также минимальное и максимальное значения аргумента и шаг его изменения.

Для редактирования свойств элементов интерфейса, определенный элемент дважды щелкнуть мышкой (левой кнопкой). Откроется редактор свойств (Property Inspector). В нем например имя элемента (под которым он фигурирует в компьютере) называется Tag. Найдя слово Tag в левой колонке, в правой увидим само имя (например text1). Надпись на элементе, которая видна в окне интерфейса, называется String. Найдя в левой колонке слово String, в правой ему соответствует сама надпись (например argument x).

Файл интерфейса имеет расширение .fig.

Подготовка М-файла, соответствующего созданному интерфейсу.

Для того, чтобы интерфейс был связан с выполнением требуемых действий (например, при нажатии на кнопку Calculate происходило бы вычисление функций и вывод их значений в соответствующих окошках) необходимо предварительно описать в М-файле все, что требуется сделать.

М-файл появится на экране после нажатия на соответствующую (четвертую справа) кнопку в ряду кнопок вверху экрана редактора интерфейса. В М-файле, имеющем то же самое название, как и файл интерфейса, уже автоматически сгенерирован текст в соответствии с выбранными пользователем элементами интерфейса. Каждому элементу интерфейса соответствует абзац текста, начинающийся с упоминания названия (Tag) элемента интерфейса.

Поскольку целесообразно начать с описания действий, выполняемых после нажатия на кнопку Calculate, то рассмотрим абзац текста в М-файле, описывающий их. Для этого в файле интерфейса щелкнем кнопку Calculate, открыв Property Inspector, и найдем Tag этой кнопки. Пусть, например, он оказался pushbutton1. Тогда в М-файле найдем абзац, озаглавленный function pushbutton1_Callback(hObject, eventdata, handles)

В этом абзаце (то есть ниже строки его заголовка) укажем что должно произойти после ее нажатия.

Должна быть вызвана функция ввода аргументов, считывающая из соответствующих текстовых окошек исходные аргументы и возвращающая вектор (массив) аргументов. Затем должна быть вызвана функция, решающая задачу вычисления значений-результатов. Она получает вектор значений аргументов и возвращает вектор значений результатов. После этого должна быть вызвана функция для вывода в соответствующие окошки интерфейса значений из вектора результатов.

Упомянутые функции должны быть описаны. Рекомендуется описывать функции выше того места программы, где они вызываются.

Команда x=str2double(get(handles.edit1,'String')); означает что в переменную x будет записано число, возвращаемое функцией str2double которая преобразует строку цифр в число. Аргумент этой функции это возвращаемое значение функции get(handles.edit1,'String')); которая обращается к элементу интерфейса handles.edit1 где handles означает обращение к визуальному интерфейсу, edit1 это обозначение конкретного элемента интерфейса.

Команда S=sprintf('%g',f1); означает что в переменную S будет записана строка символов оператором sprintf('%g',f1); который обращается к аргументу f1 и '%g' указывает что аргумент является вещественным числом.

Команда set(handles.edit4,'String',S); означает что в элемент интерфейса edit4 (окошко вывода текста) будет выведена строка символов содержащаяся в переменной S.

Построение графика. Для построения графика предназначена кнопка интерфейса Plot. Логика построения графика такова. Пользователь вводит в окошки ввода значения переменных NumFun (номер функции 1, 2 или 3), NumArg (номер аргумента), MinArg (минимальное значение аргумента, с него начинаются подписи к горизонтальной оси), MaxArg (максимальное значение аргумента, до него идут подписи к горизонтальной оси), StepArg (шаг изменения аргумента). Затем пользователь нажимает кнопку Plot и происходит построение графика в соответствии с введенными данными.

В М-файле опишем соответствующий этой кнопке абзац текста. После нажатия на кнопку вызывается функция VvodArg, считывающая исходные аргументы и возвращающая вектор их значений. Потом вызывается функция PostrGraf. Ей передается вектор аргументов. Она строит график. Для построения графика функция PostrGraf считывает из окошек текстового ввода интерфейса соответствующие переменные. Затем подсчитывает число шагов, вычитая минимальное значение из максимального и деля на величину шага. При этом команда round округляет до целого значения результат деления. NumberSteps=round((MaxArg-MinArg)/StepArg); после этого для каждого элемента массива горизонтальных координат horis точек графика и для каждого элемента массива вертикальных координат vert точек графика определяются значения. Когда все готово, то команда plot строит график и затем на график накладывается координатная сетка.

Вычислить и сохранить результаты. Для того, чтобы вычислить результаты и сразу же сохранить их в файл, предназначена кнопка Calculate & Save.

В соответствующем этой кнопке тексте программы, происходит открытие файла

Где среди возвращаемых значений p путь, f имя файла. После получения этих возвращаемых значений функции uiputfile, следует объединить эти данные с помощью команды KudaZapisat=strcat(p,f); дальнейшие действия так же, как в ранее рассмотренных упражнениях о работе с файлами.

Построить и сохранить график. Для того, чтобы построить график и сразу же сохранить его, предназначена кнопка Plot & Save. В соответствующем этой кнопке тексте программы сначала происходит построение графика. Можно было бы просто поставить вызов функции, уже описанной выше, которая строит график. Но все же более понятно для изучения, если все переменные вычисляются здесь же. Для контроля строится и сам график.

Затем, когда все переменные, описывающие график, определены, то открываем файл. Функция uiputfile возвращает путь к файлу и имя файла. Затем их объединяем в одну переменную. Записываем в файл количество элементов массивов горизонтальных и вертикальных координат (очевидно они одинакового размера). Затем записываем сами массивы координат точек графика. Потом записываем аргументы, а также номер функции и номер аргумента, для которых построен график. Затем файл закрываем.

Открыть результаты вычислений из файла. Для открытия файла с результатами вычислений предназначена кнопка Open Data. В соответствующем ей месте программы опишем необходимые действия. Функция uigetfile подготавливает данные об открываемом файле для чтения. При этом открывается окно выбора, где определяется имя файла и путь к нему. Эти данные являются возвращаемыми значениями для функции uigetfile. Получив их, объединяем их в одну переменную OtkudaChitat. Затем открываем файл. После открытия файла, считываем интересующие нас данные из файла в переменные с соответствующими названиями. Необходимо теперь вывести значения этих переменных в соответствующие окошки текстового вывода в интерфейсе. Для этого используем функцию VivodRes и ранее не использовавшуюся функцию VivodArgumentovNaEkran, которую необходимо описать выше описания кнопки.

Открыть график и данные из файла. Открытие данных, необходимых для построения графика, из файла осуществляется кнопкой Open Data & Plot. В соответствующем ей тексте программы логика действий примерно такая же как и при открытии результатов вычислений из файла. После получения всех необходимых данных из файла, осуществляется построение графика. Кроме того, выводятся данные об исходных аргументах и, кроме того, о номере функции и номере аргумента, для которых построен график. При желании можно также доработать это упражнение и выполнить подписи к осям графика в соответствии с названиями аргументов и функций.

Matlab gui руководство:

  • скачать
  • скачать
  • Другие статьи

    Моделирование цифровой обработки сигналов в Matlab

    Моделирование цифровой обработки сигналов в Matlab. Часть 8. Моделирование цифровой фильтрации средствами программ GUI Matlab: GUI SPTool Текст научной статьи по специальности « Автоматика. Вычислительная техника »

    Скопируйте отформатированную библиографическую ссылку через буфер обмена или перейдите по одной из ссылок для импорта в Менеджер библиографий.

    Солонина Алла Моделирование цифровой обработки сигналов в Matlab. Часть 8. Моделирование цифровой фильтрации средствами программ GUI Matlab: GUI SPTool // Компоненты и Технологии. 2009. №95. URL: http://cyberleninka.ru/article/n/modelirovanie-tsifrovoy-obrabotki-signalov-v-matlab-chast-8-modelirovanie-tsifrovoy-filtratsii-sredstvami-programm-gui-matlab-gui-sptool (дата обращения: 28.09.2016).

    Солонина Алла "Моделирование цифровой обработки сигналов в Matlab. Часть 8. Моделирование цифровой фильтрации средствами программ GUI Matlab: GUI SPTool" Компоненты и Технологии (2009). URL: http://cyberleninka.ru/article/n/modelirovanie-tsifrovoy-obrabotki-signalov-v-matlab-chast-8-modelirovanie-tsifrovoy-filtratsii-sredstvami-programm-gui-matlab-gui-sptool (дата обращения: 28.09.2016).

    Солонина Алла (2009). Моделирование цифровой обработки сигналов в Matlab. Часть 8. Моделирование цифровой фильтрации средствами программ GUI Matlab: GUI SPTool. Компоненты и Технологии URL: http://cyberleninka.ru/article/n/modelirovanie-tsifrovoy-obrabotki-signalov-v-matlab-chast-8-modelirovanie-tsifrovoy-filtratsii-sredstvami-programm-gui-matlab-gui-sptool (дата обращения: 28.09.2016).

    Скопируйте отформатированную библиографическую ссылку через буфер обмена или перейдите по одной из ссылок для импорта в Менеджер библиографий.

    Солонина Алла Моделирование цифровой обработки сигналов в Matlab. Часть 8. Моделирование цифровой фильтрации средствами программ GUI Matlab: GUI SPTool // Компоненты и Технологии. 2009. №95 С.128-133.

    Солонина Алла "Моделирование цифровой обработки сигналов в Matlab. Часть 8. Моделирование цифровой фильтрации средствами программ GUI Matlab: GUI SPTool" Компоненты и Технологии (2009).

    Солонина Алла (2009). Моделирование цифровой обработки сигналов в Matlab. Часть 8. Моделирование цифровой фильтрации средствами программ GUI Matlab: GUI SPTool. Компоненты и Технологии

    Заметки про Matlab

    Заметки про Matlab. Создание графического интерфейса пользователя (GUI Matlab)

    В Matlab существует два способа создать графический интерфейс пользователя (Graphical user interface, GUI):

    1. Полуавтоматический способ создание GUI с помощью инструмента GUI Layout Editor (команда guide в консоли Matlab)
    2. "Ручной" программный способ создания GUI (GUI programmatically)
    У каждого способа есть свои недостатки и преимущества. GUI Layout Editor больше подходит для начинающих пользователей, а программное создание GUI - для профессионалов. GUI Layout Editor

    В редакторе GUI Layout Editor (команда guide в консоли Matlab) можно вручную создавать все элементы интерфейса: панели, кнопки, чекбоксы и т.д.

    В результате создания интерфейса получим два файла: fig-файл с «фигурой» самого интерфейса и m-файл, который создается самим Matlab и содержит программный код всех элементов интерфейса.

    Главное преимущество guide - легко сделать простой GUI, т.к. весь код для интерфейса генерируется самим Matlab. Для работы программной частью GUI достаточно изучить принцип обмена данными с помощью команд setappdata и getappdata (что является стандартным приемом для обмена данными между различными элементами GUI).

    Но более профессиональный подход – это создавать GUI программно, не пользуясь guide.

    GUI programmatically

    Преимущества програмного создания GUI:

    • Легче управлять кодом GUI (код лучше структурирован, легче создавать новые элементы, удалять старые и т.д.)
    • Нет отдельного fig-файла для интерфейса и отдельного программного m-файла (так как любое обновление fig-файла в guide требует соответствующего обновления m-файла и может привести к нежелательным эффектам).
    Ознакомиться с guide, конечно, нужно на первых порах, чтобы лучше понять GUI в Matlab, но, по-моему, стоит переходить к программному созданию GUI чем быстрее, тем лучше.

    А вот здесь и открывается другая сторона медали. Главная трудность в программном создании GUI в MATLAB то, что нужно вручную указывать расположение всех элементов интерфейса (параметр 'Position' с 4-я элементами: x,y координаты + ширина и длина). Это очень неудобно. В guide это проблема решается очень просто - с помощью инструмента Tools->Align Objects.

    Простые интерфейсы можно довольно просто создавать программно, а вот чем больше кнопок, боксов – тем больше усложняется эта задача.

    Простой примеры программного создания интерфейса можно найти здесь GUI without guide .

    Итак, одной из важных проблем при программном создании GUI является расположение элементов. Хороший обзор инструментов, которые помогают решить эту проблему есть по ссылке Matlab layout managers. К сожелению, только в комментариях к обзору по ссылке упомянули GUI Layout Toolbox. Вот об этом тулбоксе и пойдет речь дальше.

    С помощью GUI Layout Toolbox полностью решается проблема с визуальным оформлением GUI (не зря GUI Layout Toolbox попал в выборку программы недели на главном портале Matlab Pick of the Week ).

    GUI with GUI Layout Toolbox

    Основная идея этого тулбокса вынесена в его название - это создание макетов (layouts), которые упрощают расположение элементов в главном окне GUI. У этого тулбокса очень хорошая инструкция (только на английском языке).

    Общая инструкция по работе с GUI Layout Toolbox очень простая:

    1. Создаем сетку (uiextras.Grid) (или можно этот шаг пропустить)

    2. На сетку помещаем панели (uiextras.Panel),

    3. На панели помещаем боксы (uiextras.Box)

    4. В боксы помещаем элементы управления: кнопки, оси или еще что-нибудь.

    Теперь о расположении всех элементов интерфейса заботиться GUI Layout Toolbox.

    Наглядный пример GUI с помощью GUI Layout Toolbox с моими комментариями можно скачать по ссылке GUI_example.m 187.

    В моем примере обмен данными между функциями и элементами интерфейса происходит с помощью приема, который называется Sharing Variables Between Parent and Nested - переменная, объявленная в главной функции, видима во всех вложенных функциях. Этот прием можно использовать вместо стандартных setappdata и getappdata.

    Вместо заключения

    Раньше я редко доводил программы до GUI и если и делал это, то только с помощью guide. Но с GUI Layout Toolbox эта задача очень сильно упростилась, за это большое спасибо разработчикам этого тулбокса.

    Приложения с GUI

    Приложения с GUI

    В состав MatLab входит среда GUIDE для создания приложений с графическим интерфейсом пользователя. Работа в этой среде достаточно проста - элементы управления (кнопки, раскрывающиеся списки и т.д.) размещаются при помощи мыши, а затем программируются события, которые возникают при обращении пользователя к данным элементам управления.

    Приложение может состоять как из одного основного окна, так и нескольких окон и осуществлять вывод графической и текстовой информации, в основное окно приложения и в отдельные окна. Ряд функций MatLab предназначен для создания стандартных диалоговых окон открытия и сохранения файла, печати, выбора шрифта, окна для ввода данных и др. которыми можно пользоваться в собственных приложениях.

    Что необходимо знать для создания приложений с графическим интерфейсом? Во-первых, как программируются файл-функции с подфункциями, файл-функции с переменным числом входных и выходных аргументов. Во-вторых, требуется иметь представление об иерархической структуре и свойствах графических объектов, уметь обращаться с указателями на них. Разумеется, не должна вызывать затруднение работа с числовыми массивами, строками, структурами, ячейками и массивами строк, структур и ячеек, а также использование конструкций встроенного языка программирования.

    Приложение с графическим интерфейсом может быть написано и без применения среды GUIDE. В качестве примера, можно привести bspligui, входящее в состав Spline ToolBox. Желающим разобраться в создании приложений без среды GUIDE можно посоветовать запустить приложение bspligui в режиме отладки, проследить за созданием окна приложения, элементов управления и способе обработки событий (достаточно открыть файл bspligui.m, установить точку останова на первую исполняемую строку и запустить приложение). К этому вопросу мы со временем обратимся.

    При создании приложений с графическим интерфейсом пользователя будут полезны следующие разделы справочной системы MatLab:

    · "MATLAB: Creating Graphical User Interfaces".

    · "MATLAB: Functions -- Categorical List: Creating Graphical User Interfaces"

    · "MATLAB: Handle Graphics Property Browser" (справочник свойств графических объектов).

    · В справочной системе MatLab 7 в разделе "Demo" есть 10-ти минутная демонстрация создания приложения с графическим интерфейсом в среде GUIDE.

    В качестве простейшего примера рассмотрим создание в среде GUIDE приложения с кнопкой Hello. нажатие на которую приводит к выводу текста "Hello, World!" в окно приложения.

    Создание приложения hello в среде GUIDE

    Требуется создать приложение с графическим интерфейсом hello, запуск которого, например из командной строки

    приводил бы к появлению окна приложения с кнопкой Hello (см. рис 1.a). После нажатия на Hello в окно приложения выводится текст "Hello, World!" (см. рис 1.b).

    Рис. 1. Работа приложения hello

    Перейдите в среду GUIDE, выполнив команду

    При этом появляется диалоговое окно GUIDE Quick Start (см. рис. 2). У него две вкладки.

    • Вкладка Create New GUI (создание нового приложения), которая нам сейчас понадобится. На ней можно выбрать четыре заготовки: Blank GUI (пустое окно приложения), GUI with Uicontrols (заготовка с кнопками, переключателями и областями ввода), GUI with Axes and Menu (заготовка с осями, меню, кнопкой и раскрывающимся списком), Modal Question Dialog (заготовка для модального окна).
    • Вкладка Open Existing GUI (открытие существующего приложения).

    Кроме того, внизу вкладки Create New GUI есть флаг, установка которого позволяет сразу задать имя файла, в котором будет храниться графический интерфейс. Но приложение всегда можно будет сохранить в процессе редактирования, поэтому этот флаг устанавливать не обязательно.

    Рис. 2. Диалоговое окно GUIDE Quick Start

    Выберите на вкладке Create New GUI строку Blank GUI и нажмите OK. При этом появляется основное окно среды GUIDE, содержащее заготовку для окна приложения, панель инструментов для добавления элементов интерфейса, управляющую панель и меню (см. рис. 3).

    Рис. 3. Среда GUIDE с заготовкой для окна приложения

    Сначала добавьте кнопку на заготовку окна приложения. Для этого при помощи мыши выберите инструмент Push Button (его пиктограмма содержит кнопку OK, а имя появляется на всплывающей подсказке) и щелчком мыши поместите кнопку на заготовку окна приложения (см. рис. 4)

    Рис. 4. Добавление кнопки на заготовку окна приложения

    После добавления элемента интерфейса необходимо задать его тег (имя), который будет идентифицировать данный объект среди всех остальных объектов. Тег объекта понадобится для получения и установки его свойств и программирования событий, возникающих при обращении пользователя к элементу управления, например, при нажатии на кнопку.

    Для задания тега следует перейти к инспектору свойств. Проще всего это сделать двойным щелчком мыши по добавленной кнопке. При этом появляется окно инспектора свойств (Property Inspector), в котором отображены свойства кнопки (объекта Uicontrol). Найдите в левом столбце таблицы свойство Tag и в области ввода справа от него измените текущее значение pushbutton1 на btnHello и нажмите <Enter>. Всегда лучше давать объектам содержательные теги!

    Заметьте, что тег и надпись на кнопке не одно и то же. Сразу же в окне инспектора свойств измените надпись, обратившись к свойству String. Вместо Push Button должно быть Hello.

    Наше приложение должно выводить текст. Но текст нельзя просто вывести в графическое окно, поскольку текстовый объект является потомком осей. Мы не будем сейчас размещать оси, а поступим по-другому. Расположите в окне приложения элемент управления - Static Text (статический текст, или область для вывода текста). Для этого воспользуйтесь инструментом Static Text так же, как и при добавлении кнопки (см. рис. 5).

    При размещении элементов управления следует выбрать соответствующий инструмент и либо щелкнуть мышью по заготовке окна приложения (тогда элемент управления примет стандартный размер), либо нарисовать элемент управления на заготовке окна, удерживая нажатой левую кнопку мыши. Всегда можно изменить размер, выделив элемент управления в заготовке окна при помощи мыши (должен быть включен режим выделения, т.е. выбран соответствующий инструмент Select) и потянув мышью за квадратные маркеры. В режиме выделения можно также перемещать элементы управления по заготовке окна приложения.

    Рис. 5. Добавление области вывода текста

    Задайте тег txtWin области вывода текста, а ее свойство String установите в пустую строку, просто удалив в инспекторе свойств то значение, которое присваивается по умолчанию.

    Обратите внимание, что области вывода текста является графическим объектом Uicontrol, так же, как и кнопка (это написано вверху инспектора свойств). Вид элемента управления, т.е. объекта Uicontrol определяется значением его свойства Style. Для кнопки оно принимает значение 'pushbutton', для области вывода текста 'text'.

    Предположим, что наше приложение уже работает. При нажатии пользователем на кнопку Hello возникнет ее событие Callback, которое пока не запрограммировано. Очевидно, что при возникновении события Callback необходимо установить свойство String области вывода текста в значение 'Hello, World!' и задать цвет и размер шрифта.

    Перед программированием события сохраните приложение. Для этого в меню File среды GUIDE выберите пункт Save as, появляется диалоговое окно сохранения файла, в котором выберите папку или создайте новую и задайте имя файла hello (автоматически добавится расширение fig). Обратите внимание, что после сохранения приложения в редакторе M-файлов открылся файл hello.m. По умолчанию, приложение содержится в двух файлах: с расширением fig (графическое окно с размещенными на нем элементами управления) и с расширением m (файл-функция hello с подфункциями, которые обрабатывают различные события, возникающие в ходе взаимодействия приложения с пользователем).

    Приступим к программированию события Callback кнопки Hello. Для этого перейдите к заготовке окна приложения и в контекстном меню кнопки выберите в пункте View Callbacks подпункт Callback. При этом происходит переход в редактор M-файлов к подфункции обработки события btnHello_Callback, заголовок которой и комментарии генерируется автоматически:

    % --- Executes on button press in btnHello.
    function btnHello_Callback(hObject, eventdata, handles)
    % hObject handle to btnHello (see GCBO)
    % eventdata reserved - to be defined in a future version of MATLAB
    % handles structure with handles and user data (see GUIDATA)

    После заголовка требуется разместить те операторы, которые будут выполняться при нажатии на кнопку Hello.

    Имя файл-функции состоит из тега объекта (btnHello), событие Callback которого будет обрабатываться и названия события Callback (есть и другие события). Смысл ее входных аргументов следующий.

    · Аргумент hObject содержит указатель на кнопку Hello, т.е. объект Uicontrol с тегом btnHello (он нам сейчас не понадобится).

    · Аргумент eventdata зарезервирован для использования в следующих версиях MatLab.

    · Аргумент handles является структурой с указателями на все объекты приложения. Поля структуры handles являются тегами этих объектов. Так handles.btnHello содержит указатель на кнопку Hello, handles.figure1 - указатель на окно приложения, handles.txtWin - указатель на область вывода текста (как раз этот указатель нам сейчас и пригодится).

    Приступим теперь к программированию события Callback кнопки Hello. После заголовка подфункции btnHello_Callback разместите операторы, которые изменяют значение свойства String области вывода текста (объекта Uicontrol), устанавливая его в 'Hello, World!', а также цвета и размера шрифта. За цвет и размер шрифта отвечают свойства ForegroundColor и FontSize объекта Uicontrol. Размер шрифта указывается в единицах измерения, заданных свойством FontUnits (по умолчанию пункты, 1пт=1/72дюйма). Свойства графических объектов задаются при помощи функции set.

    Итак, подфункция btnHello_Callback должна выглядеть так (автоматически сгенерированные комментарии убраны):

    function btnHello_Callback(hObject, eventdata, handles)
    % размещение текста
    set(handles.txtWin,'String','Hello, World!')
    % задание красного цвета текста
    set(handles.txtWin,'ForegroundColor','r')
    % задание размера шрифта 16пт
    set(handles.txtWin,'FontSize',16)

    Теперь приложение hello можно запустить, воспользовавшись кнопкой Run на панели управления среды GUIDE. Перед запуском может появится окно, приведенное на рис. 6, в котором говорится о том, что папка с файлами приложения не является текущей. В этом окне можно либо сделать ее текущей (переключатель Change MATLAB current directory), либо добавить папку в начало пути поиска MATLAB (переключатель Add directory to the top of the MATLAB path), либо в конец пути поиска (переключатель Add directory to the bottom of the MATLAB path). Установите верхний переключатель (как по умолчанию), вряд ли стоит добавлять папку с таким простым приложением в путь поиска. Скорее всего оно не часто будет нужно.

    Рис. 6. Диалоговое окно с сообщением о том, что папка с файлами приложения не является текущей.

    Нажатие на кнопку Hello в работающем приложении приводит к появлению надписи "Hello, World!" вверху окна. Закройте работающее приложение, нажав на кнопку с крестиком на заголовке окна. Вы снова находитесь в режиме редактирования. Можно добавлять элементы управления на заготовку окна приложения, задавать их теги и другие свойства, программировать события, запускать приложение и смотреть на результат. Например, уменьшите окно приложения в среде GUIDE (как на рис. 1) и запустите приложение снова.

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

    Среда GUIDE предлагает ряд средств, которые облегчают проектирование приложения:

    · сетку с возможностью привязки объектов к ней, линейки и линии выравнивания (меню Tools, пункт Grid and Rules);

    · инструменты выравнивания объектов (меню Tools, пункт Align Objects или кнопка Align Objects на панели управления среды GUIDE);

    В среду GUIDE входят также :

    · редактор меню, который позволяет создавать меню приложения и контекстные меню (меню Tools, пункт Menu Editor или кнопка Menu Editor на панели управления среды GUIDE);

    · браузер объектов для быстрого перехода к их свойствам (кнопка Object Browser на панели управления среды GUIDE)

    · редактор порядка обхода элементов управления клавишей Tab (меню Tools, пункт Tab Order Editor или кнопка Tab Order Editor на панели управления среды GUIDE).

    Вызов инспектора свойств происходит не только после двойного щелчка мышью по объекту, но также из контекстного меню объекта, или при помощи кнопки Property Inspector на панели управления среды GUIDE.

    Запуск приложения без среды GUIDE и редактирование

    Разумеется, созданное в предыдущем разделе приложение hello не требует для запуска среду GUIDE. Закройте окно среды GUIDE (если оно открыто) и перейдите в командное окно MatLab. Убедитесь, что папка с приложением является текущей (она должна быть выбрана в раскрывающемся списке Current Directory рабочей среды MatLab). Если это не так, то сделайте ее текущей, воспользовавшись кнопкой справа от раскрывающегося списка Current Directory, или окном Current Directory .

    Для запуска приложения достаточно набрать его имя в командной строке и нажать <Enter>:

    Приложение можно вызывать не только из командной строки, но и из любого другого приложения, при этом MatLab должен быть способен найти путь к нему, т.е. папка с приложением должна быть текущей, или содержаться в пути поиска MatLab

    Для редактирования существующего приложения с графическим интерфейсом пользователя есть два способа:

    1. Запустить среду GUIDE командой guide и в появляющемся диалоговом окне GUIDE Quick Start (см. рис. 2 предыдущего раздела) перейти ко вкладке Open Existing GUI и выбрать приложение.

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

    При таком способе папка с приложением должна быть текущей, или содержаться в пути поиска MatLab.

    Как работает приложение, созданное в среде GUIDE?

    Это важный вопрос для тех, кто хочет создавать сложные приложения. Если Ваша цель состоит в написании простых приложений, то достаточно научиться размещать элементы интерфейса и программировать их события в подфункциях так, как описано выше в разделе "Создание приложения hello в среде GUIDE". Простое приложение состоит из одного основного окна, которое содержит различные элементы управления, области вывода текстовой информации и оси. Использование стандартных диалоговых окон облегчает работу с файлами, ввод данных, выбор шрифта, цвета и печать результатов. Однако, если Вы планируете программировать многооконные приложения, то прочтите этот раздел сейчас, или вернитесь к нему по мере надобности.

    Обсудим работу приложения с графическим интерфейсом пользователя hello, созданию которого посвящен раздел "Создание приложения hello в среде GUIDE". Перейдите в режим редактирования приложения одним из способов, приведенных в предыдущем разделе, например:

    Откройте в редакторе M-файлов файл-функцию hello. Это функция с переменным числом входных и выходных аргументов, ниже она приведена без автоматически созданных комментариев и подфункций.

    function varargout = hello(varargin)

    Поставьте точку останова в редакторе M-файлов в строке с первым исполняемым оператором gui_Singleton = 1. Запустите приложение hello, например, из командной строки:

    и выполните операторы hello по шагам используя F10 (или кнопку Step).

    Сначала переменной gui_Singleton присваивается 1, затем формируется структура gui_State с полями:

    • gui_Name - имя M-файла с работающей в данный момент файл-функцией приложения, которое возвращается функцией mfilename;
    • gui_Singleton - сколько копий приложения может быть запущено одновременно, в нашем случае это поле содержит 1, это значит, что может быть запущена только одна копия приложения (0 означает, что может быть одновременно запущено несколько копий);
    • gui_OpeningFcn - указатель на подфункцию hello_OpeningFcn (в файле hello.m), выполняющуюся перед тем, как окно приложения появится на экране;
    • gui_OutputFcn - указатель на подфункцию hello_OutputFcn (в файле hello.m), которая определяет, что возвращает функция hello, вызванная с выходным аргументом (по умолчанию, указатель на графическое окно приложения);
    • gui_LayoutFcn - по умолчанию пустой массив, может быть указателем на функцию, которая определяет способ появления приложения.
    • gui_Callback - пока пустой массив, при возникновении события от некоторого элемента управления будет содержать указатель на функцию hello c необходимыми входными аргументами, которые и определят исполняемую подфункцию в hello.m.

    После заполнения структуры gui_State проверяется, была ли функция hello вызвана со входными аргументами (nargin содержит число входных аргументов) и является ли первый из них строкой. При запуске приложения входных аргументов не было. Они появляются при возникновении событий от элементов управления. Действительно, если в инспекторе свойств отобразить свойства кнопки Hello и посмотреть значение ее свойства Callback, то станет понятно, что при возникновении события Callback кнопки вызывается функция hello: hello('btnHello_Callback',gcbo,[],guidata(gcbo)). Тогда в поле gui_Callback структуры gui_State заносится соответствующий указатель при помощи функции str2func.

    Функция str2func конструирует указатель на функцию, заданную строкой, например:
    >> f=str2func('exp')

    Следующий оператор if проверяет, была ли функция hello вызвана со выходными аргументами (nargout содержит число входных аргументов) и вызывает специальную функцию gui_mainfcn от структуры gui_State и входных аргументов hello. При первом вызове входных аргументов не было и gui_mainfcn создаст окно приложения. Последующие вызовы hello со входными аргументами, вызванные возникновением событий от элементов управления, приведут к обращению к соответствующим подфункциям обработки событий в hello.m. Это можно проследить пошаговым выполнением в редакторе M-файлов.

    Функция gui_mainfcn имеет открытый код и расположена в подкаталоге \toolbox\matlab\uitools\ основного каталога MatLab.

    GUI создание приложения в MATLAB онлайн видеокус - Видео Училка

    Создание GUI в MATLAB онлайн видеокус Создание GUI в MATLAB

    Здравствуйте уважаемые посетители сайта Видео Училка, в этой части нашего видео портала хотели Вам рассказать про программированию в системе MatLab по созданию GUI приложений в графическом варианте.

    Создание GUI в MATLAB

    Смотрите замечательные видеокурс с простыми примерами, как можно создать GUI приложений без руководства или с более простым использованием в среде MATLAB, от автора данного курса Николай Золотых Доц. каф. математической логики и высшей алгебры к.ф.-м.н. (1998), доцент (2005)

    Николай Юрьевич Золотых

    Окончил факультет ВМК в 1995 г. Обучался в аспирантуре с 1995 по 1998 гг. В 1998 г. защитил кандидатскую диссертацию (руководитель: В. Н. Шевченко). Область научных интересов: дискретная оптимизация, дискретная геометрия, компьютерная алгебра, машинное обучение. Ознакомиться с другими работами Николая Юрьевича Золотых вы сможете на его домашней странице Центра Интернет в Нижегородском государственном университете им. Н.И.Лобачевского

    В этом видеокурсе «Создание GUI в MATLAB» Вы узнаете как научитесь создавать различные приложения с графическим интерфейсом в программе для технических расчетов, которая включает в себя вычисления, визуализацию и программирование в удобной среде, где задачи и решения выражаются в форме, близкой к математической. Для выполнения задач и решения технических вычислений на основе языка программирования четвертого поколения. Просмотрев данный видеокурс Вы научитесь создавать различные приложения с графическим интерфейсов в программе MATLAB. Освойте навыки программирования в интерактивной среде, служащей для разработки алгоритмов и современных инструментов анализа данных!

    Смотрите видео уроки по созданию приложений с GUI в MATLAB на нашем сайте Видео Училка в любое удобное время для Вас. Удачи!

    Урок 1. Часть 1. Урок 2. Часть 2. Урок 3. Часть 3-1.