Интерфейс системы matlab. Элементы управления, в том числе и созданные в ходе работы приложения, могут иметь собственное контекстное меню, которое доступны через нажатие ЛКМ. Работа с панелью инструментов

Построение графического интерфейса в системе Matlab


Введение

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

· математика и вычисления;

· разработка алгоритмов;

· вычислительный эксперимент, имитационное моделирование, макетирование;

· анализ данных, исследование и визуализация результатов;

· научная и инженерная графика;

· разработка приложений, включая графический интерфейс пользователя.

Основным объектом при программировании в среде Matlab является массив, для которого не требуется указывать размерность явно. Это позволяет решать многие вычислительные задачи, связанные с векторно-матричными формулировками.

Система Matlab – это одновременно и операционная среда и язык программирования. Пользователь может написать специализированные функции и программы, которые оформляются в виде М-файлов. По мере увеличения количества созданных программ возникают проблемы их классификации и тогда можно попытаться собрать родственные функции в специальные папки. Это приводит к концепции пакетов прикладных программ, которые представляют собой коллекции М-файлов для решения определенной задачи или проблемы.


C реда системы Matlab

Среда системы Matlab это совокупность интерфейсов, через которые пользователь поддерживают связь этой системой. Это: диалог посредством командной строки или графического интерфейса, просмотр рабочей области, редактор и отладчик М-файлов, работа с файлами и оболочкой DOS, экспорт и импорт данных, интерактивный доступ к справочной информации, динамическое взаимодействие с внешними системами Microsoft Word , Microsoft Excel и др. Реализуются эти интерфейсы через командное окно, инструментальную панель, системы просмотра рабочей области и путей доступа, редактор / отладчик М-файлов, специальные меню.

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

В системе Matlab существует два вида м-файлов:

Скрипты – представляют последовательности команд (представляют собой процедуры);

Function– представляют собой функции с входными аргументами и выходными параметрами (значениями функции).

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

Все эти и другие трудности, возможно, решить при использовании графического интерфейса пользователя. (GUI– GraphicalUserInterface)

Основные принципы построения графического интерфейса

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

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

1. Постановка задачи,

2. Создание формы интерфейса и создание на неё элементов управления.

3. Написание кода программы и кода обработки событий.

Этапы построения графического интерфейса пользователя

1. На первом этапе проводиться анализ поставленной задачи и определяется количество и состав элементов управления необходимых для решения задачи.

2. На втором этапе создаётся форма графического интерфейса и на ней создаются и размещаются элементы управления. Здесь же описываются их свойства.

Задавать расположение и выравнивать элементы на форме описывать их свойства можно "вручную", но для удобства и быстроты используют редактор выравнивания объектов (TheAlignmentTool) и редактора свойств (ThePropertyEditor).

Существует два способа создания формы и элементов управления, а так же задания или изменения их свойств:

Использование команды WORKSPACE (то есть использование команды операционной среды MATLAB).

Использование средств панели инструментов – совокупности средств для быстрого создания GUI (TheControlPanel).

При построении элементов управления первым способом удобно использовать скрипт-файл, в котором последовательно с помощью команд WARKSPACE описывается создание элементов управления и устанавливаются их свойства.

Эти команды можно использовать как для написания кода, создающего графический интерфейс пользователя, так и использовать для управления свойствами элементов управления из тела m-файлов. Благодаря чему мы можем получить визуализацию нашего процесса вычисления.

На практике всё более склоняются ко второму способу создания графического интерфейса с элементами управления. Это объясняется тем, что при использовании панели управления с её редакторами свойств, событий, выравнивания очень удобно работать, и создавать GUI значительно быстрее, чем в первом случае.

3. На третьем этапе создания графического интерфейса пользователя (GUI) пишется код основной программы вычисления и код для обработки событий.

Код основной программы вычисления, пишется на языке программирования операционной среды Matlab, в виде m-файла. Созданные m-файлы закрепляются за событием какого-нибудь элемента управления или формы.

При описании свойств элементов управления события описываются в m-файле:

а) либо при создании каждого элемента управления описываем его свойства и сразу описываем действие событие;

б) либо описываем обработку события для каждого элемента при помощи редактора событий (ThePropertyEditor).

Начало выполнения действий по созданию графического интерфейса

Редактор GUIDE (руководство) вызывается командой guideиз командного окна или путем выполнения цепочки команд главного меню File (Файл) – New (Новый) – GUI (Графический Интерфейс).

Две странички, присутствующие на стартовой заставке (рис. 1), позволяют начать проектирование нового интерфейса (вкладка – CreateNewGUI, (Создать новый интерфейс)) или воспользоваться ранее созданным интерфейсом (вкладка – OpenExistingGUI (Открыть существующий интерфейс)). Дело в том, что описание формы приложения вместе с расположенными на ней интерфейсными компонентами может быть сохранено в файле с расширением fig. Если на диске хранится нечто похожее на наше будущее приложение, существующим файлом можно воспользоваться с целью экономии времени.

Начальная конструктора графического интерфейса (GUIDE) (рис. 1)

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

Окно редактирования формы (рис. 2)


Окно редактирования m-кода формы (рис. 3)

Это код, описывающий поведение сохраненной нами формы. В нем содержатся процедуры и функции, которые позволяют форме быть работоспособной.


Окно программы, запущенной на выполнение (рис. 4)

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

Выбирая различные пункты в выпадающем меню, а затем, нажимая кнопку, вы увидите различные варианты получаемых графиков.

Алгоритм создания интерфейса

1. Вызвать панель управления.

1) Создать новую форму интерфейса или загрузить существующую.

2) Перейти в режим редактирования формы.

3) Натаскать на форму необходимые элементы управления.

2. Вызвать редактор свойств.

2) Выбрать нужное свойство и изменить его.

3. Вызвать редактор событий.

1) Выбрать элемент управления.

2) Написать код обработки события.

4. Вызвать редактор выравнивания объектов.

1) Выбрать элемент управления иди группу элементов.

2) Выбрать метод выравнивания.

5. Перейти в окно панели управления и активизировать интерфейс.

Литература

1. Дьяконов, В.П. MATLAB 6.5 SP1/7 + Simulink 5/6 в математике и моделировании / В.П. Дьяконов. – М.: СОЛОН-Пресс, 2005. – 576 с.

2. Дьяконов, В.П. MATLAB 6.5 SP1/7 + Simulink 5/6. Основы применения / В.П. Дьяконов – М.: СОЛОН-Пресс, 2005. – 800 с.

3. Дьяконов, В.П. MATLAB 6.5 SP1/7 + Simulink 5/6. Работа с изображениями и видеопотоками / В.П. Дьяконов. – М.: СОЛОН-Пресс, 2005. – 400 с.

4. Ермачкова Ю.А. Проектирование интерфейса в среде GUIDEMATLAB / Ю.А. Ермачкова // Современные информационные технологии в экономике, управлении и образовании. Сборник материалов межвузовской научно-практической конференции, посвященной 175 – летию потребительской кооперации России и 5 – летию филиала. – М.: Информационно-внедренческий центр «Маркетинг», 2006. – С. 35–37.


Приложение

function varargout = kursovaya(varargin)

% KURSOVAYA M-file for kursovaya.fig

% KURSOVAYA, by itself, creates a new KURSOVAYA or raises the existing

% H = KURSOVAYA returns the handle to a new KURSOVAYA or the handle to

% the existing singleton*.

% KURSOVAYA ("CALLBACK", hObject, eventData, handles,…) calls the local

% function named CALLBACK in KURSOVAYA.M with the given input arguments.

% KURSOVAYA ("Property", "Value",…) creates a new KURSOVAYA or raises the

% existing singleton*. Starting from the left, property value pairs are

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

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

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

Для получения указателей есть функции: 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.

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

Uiputfile("Путь к файлу\Имя файла.расширение", "Окно выбора");

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

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

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

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

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

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

СОЗДАНИЕ ГРАФИЧЕСКИХ ПРИЛОЖЕНИЙ В СРЕДЕ MATLAB

Методические указания к лабораторной работе по дисциплине «Автоматизация инженерных вычислений» для студентов всех форм обучения направления 230100 - Информатика и вычислительная техника,

И.А. Селиванова, А.А. Букин

В.А. Блинов

Екатеринбург УрФУ 2012

1. Принципы создания графических интерфейсов

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

1. Разработка графического интерфейса пользователя (Graphical User Interface), которая заключается в расположение элементов управления в пределах окна.

2. Программирование обработчиков событий, вызываемых работой с элементами управления.

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

2. Постановка задачи

Цель данной лабораторной работы - изучение основных принципов создания графических приложений в пакете MATLAB.

В процессе поэтапного выполнения данной работы необходимо разработать графическое приложение в среде MATLAB. Пример окна приложения приведён на рисунке 1. Расположение элементов может отличаться от предложенного.

Рис. 1 Окно приложения

3. Среда GUIDE

Перейдите в интерактивную среду разработки графического интерфейса - GUIDE, выполнив команду guide в командной строке. В появившемся окне выберите пункт Blank GUI на закладкеCreate New GUI и нажмите ОК. Откроется окно редактора интерфейса (рис. 2).

Рис. 2 Окно редактора интерфейса

Редактор пользовательского интерфейса содержит:

* строку меню;

* панель инструментов управления приложением;

* заготовку окна приложения с нанесенной сеткой;

* вертикальную и горизонтальную линейки;

* панель инструментов для добавления элементов интерфейса на окно приложения.

Редактор приложения MATLAB позволяет разместить различные элементы интерфейса. Для этого нажмите соответствующую кнопку на панели инструментов в левой части окна редактора интерфейса, и поместите выбранный объект на форму.

Приложение в данный момент находится в режиме редактирования. Любой объект можно удалить из окна при помощи кнопки Delete , предварительно его выделив. Запуск приложения производится при помощи кнопки Run либо выбором соответствующего пункта меню Tools . При запуске программа предложит сохранить проект. Выберите имя сохраняемого файла, например, mygui . fig , и директорию для сохранения, затем нажмите Save . Приложение запускается в отдельном окне с заголовком по умолчанию. Пользователь может обращаться к размещенным в приложении элементам управления.

3.1 Программирование событий

Графическое приложение в MATLAB хранится в двух файлах с расширениями.fig и.m , первый из них содержит описание формы окна, а второй - код программы. Добавление элемента интерфейса в редакторе приводит к автоматической генерации шаблона обработчика события (например, обработчика нажатия кнопки) в файле с кодом программы.

Создадим приложение, окно которого содержит поле вывода графических элементов (Axes ), содержащее координатные оси, и две кнопки (Push Button ), предназначенные для построения графика функции и очистки поля.

Разместите на форме первую кнопку и объект Axes так, как показано на рис. 3. На кнопке автоматически размещается надпись Push Button . Каждый графический элемент обладает набором свойств, определяющих его внешний вид и поведение. Имя графического элемента Tag позволяет различать элементы интерфейса. Следует дать кнопке описывающее её функционал имя.

Рис. 3 Размещение компонентов

Для этого нажмите правой кнопкой мыши на кнопке, а в открывшемся списке вызовите редактор свойств Property Inspector , либо два раза кликните левой кнопкой мыши(рис. 4).

Рис. 4 Окно Property Inspector

В открывшемся окне редакторе свойств измените значение Tag на btnPlot .Это имя впоследствии будет использоваться для доступа к свойствам кнопки при программировании. Можно заметить, что имя дано в соответствии с элементом управления и его будущей функцией (button - кнопка, Plot - строить). Аналогичным образом дайте объекту Axes имя axMain .

Когда в запущенном приложении пользователь нажимает на кнопку, то вызывается обработчик событий, имя которого формируется из имени элемента, нижнего подчеркивания и слова Callback (отзыв). Сейчас он не содержит операторов. Желательно задавать имена элементов до обращения к обработчику, чтобы не пришлось менять название генерируемой функции в дальнейшем. Чтобы вызвать обработчик, вызовите правой кнопкой мыши раскрывающийся список для btnPlot , выберите в нем View Callbacks и запустите Callback , открывшийся обработчик события измените в соответствии с листингом 1.

Листинг 1.

btnPlot .

mygui.m :

x = -2.5: 0.6: 2;

drawPlot(x, y, handles);

Чтобы создать функцию drawPlot , в интерфейсе MATLAB выберите пункт меню File , затем в раскрывающемся списке New выберите элемент Script . Созданный файл функции оформите в соответствии с листингом 2 и сохраните в директорию с файлом mygui . m .

Листинг 2.

Функция прорисовки графика, вызываемая из btnPlot .

drawPlot.m :

changeMarker(handles)

changeColor(handles)

Для функций changeMarker и changeColor создайте пустые Script файлы (заглушки). Сохраните оба файла и запустите приложение из редактора приложений. Нажатие на кнопку в запущенном приложении должно приводить к отображению графика функции в объекте axMain . Закройте окно приложения и продолжите работу в редакторе форм. Добавьте вторую кнопку с именем btnC lear . Перейдите к функции обработки события второй кнопки. Оформите вызов функции p lotClearDialog , как показано в листинге 4.

Листинг 3.

Обработка события кнопки с именем btnC lear .

mygui.m :

Сохраните функцию plotClearDialog в одноименном Script файле, впоследствии мы ее модифицируем.

Листинг 4.

Функция очистки графика, вызывается из btnC lear .

plotClearDialog.m :

Запустите приложение и убедитесь, что нажатие на первую кнопку приводит к отображению графика функции, а вторая служит для очистки графика.

3.2 Конструирование интерфейса

3.2.1 Управление свойствами объектов

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

3.2.2 Проектирование формы

Продолжите работу над приложением, следует изменить надписи на кнопках, например, на «Построить» и «Очистить ». Кнопки имеют свойство String , принимаемое им значение есть отображаемая на кнопке строка. Измените в инспекторе надписи кнопок так, как было указано ранее. Запустите приложение.

3.2.3 Изменение свойств из программного кода

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

Блокировка кнопки зависит от свойства Enable , при значении on доступна, a при off нет. Установка значений свойствам объектов в программе производится при помощи функции set .

Функция set вызывается с тремя параметрами - ссылкой на объект, свойство которого нужно поменять, названием свойства и его значением. Последние два аргумента заключаются в апострофы. Аргументы hObject и handles функций-обработчиков содержат указатели. В hObject хранится указатель на тот объект, событие которого обрабатывается в данный момент, a handles является вектором указателей на все объекты на форме. Например, handles . btn Plot является указателем на кнопку btnPlot . Установите в редакторе свойств для кнопки «Очистить » свойство Enable равным off , затем измените программу в соответствии с листингом 5.

Листинг 5.

Обработка состояний кнопок.

mygui . m :

function btnPlot_Callback(hObject, eventdata, handles)

x = -2.5: 0.6: 2;

drawPlot(x, y, handles);

plotDialog(hObject, handles);

function btnClear_Callback(hObject, eventdata, handles)

set(hObject, "Enable", "off");

set(handles.btnPlot, "Enable", "on");

Создайте заглушку для функции plotDialog . Не забывайте перед очередным запуском приложения сохранять как.m файл, так и.fig файл.

3.3 Работа над приложением

3.3.1 Запуск приложения

Запуск приложения осуществляется не только из редактора приложений. Для запуска приложения достаточно в качестве команды задать его имя в командной строке >>mygui

Каталог с приложением должен содержаться в путях поиска MATLAB или являться текущим.

3.3.2 Оформление интерфейса

Часто требуется, чтобы небольшое перемещение мыши вызывало изменение положения объекта на некоторый фиксированный шаг. Сетка редактора приложений позволяет осуществить такое дискретное движение. Выбор пункта Grid and Rulers меню Tools приводит к появлению диалогового окна.

Флаги Show rulers и Show grid соответствуют отображению линеек и сетки в редакторе приложений, а раскрывающийся список Grid Size позволяет выбрать размер ячеек сетки. Минимально допустимый размер - десять пикселей, он позволяет достаточно точно располагать элементы управления в окне приложений. Привязка перемещения к линиям сетки происходит при установленном флаге Snap to grid .Она позволяет размещать объекты и изменять их размер точно по линиям сетки.

3.4 Программирование элементов интерфейса

3.4.1 Флаги и рамки

Флаги Checkbox используются для изменения величин с двумя возможными значениями. Добавьте два флага с помощью панели инструментов и задайте значения String для них сетка по X и сетка по Y . Эти флаги должны устанавливать отображение соответствующей сетки на графике.

Обычно несколько элементов управления со схожим назначением группируются внутри рамки Panel сназванием «Сетка» .Измените размеры элемента axMain , освободив, справа место для рамки. Нанесите рамку на окно приложения при помощи соответствующей кнопки. В рамку добавьте два флага. Разместите поясняющие подписи рядом с флагами и установите для них значения Tag равные chbxGridX и chbxGridY , затем произведите необходимые изменения кода в соответствии с листингом 6.

Листинг 6.

Обработка событий отображения сетки.

mygui.m :

Преобразование булевских значений в строковые.

map Value.m :

if get(hObject, property)

Изменения в построении с условием наличия сетки.

drawPlot.m

3.4.2 Переключатели

Переключатели Radio Button предоставляют пользователю возможность изменять величины с несколькими возможными значениями. Всегда установлен только один переключатель из группы. С помощью них, например, можно реализовать переключение маркеров для узловых значений на квадраты или круги.

Добавьте в окно приложения новую панель Button Group (организует переключение дляRadio Button самостоятельно), укажите для неё тег MarkGroup , название «Маркеры» , затем нанесите на нее три переключателя, с именами rbMarkCir c , rbMarkSq , rbMarkNone , и надписями - «маркеры-круги» , «маркеры-квадраты» , «без маркеров» соответственно.

Состояние переключателя определяется его свойством Value : если Value равно единице, то переключатель включен. Задайте в редакторе свойств значение 1 свойству Value переключателя с надписью «без маркеров», тогда он будет включен при запуске программы.

Листинг 7.

Устанавливаем возможные значения.

mygui . m :

handles.output = hObject;

guidata(hObject, handles);

changeMarker(handles)

Функция изменяет маркер в соответствии с выбранным переключателем.

changeMarker.m :

markers = getappdata(handles.figure1, "optionsValues");

Функция возвращает текущий маркер.

getMarkerValue.m:

Функция возвращает текущий переключатель в указанной группе.

getSelectedOption.m:

index = counter;

3.4.3 Списки

При помощи раскрывающегося списка можно предоставить возможность выбора цвета линии графика. Перейдите в режим редактирования и добавьте раскрывающийся список Pop - up M enu с тегом pmColor ,элементами которого являются строки «синий» , «красный» , «зеленый» (поле String в многострочном режиме).

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

Листинг 8.

Сохраняем вектор с цветами в контексте формы.

mygui.m :

function GuiProj_OpeningFcn(hObject, eventdata, handles, varargin)

colors = ["b", "r", "g" ];

Внесите вызов ChangeColor в обработчик списка.

mygui.m :

changeColor(handles)

Изменение цвета линии.

ChangeColor.m:

function changeColor(handles)

thePlot = getappdata(handles.axMain, "plot");

3.4.4 Полосы прокрутки

С помощью полосы скроллинга можно задавать, например, толщину линии графика. Добавьте полосу скроллинга Slider в окно приложения и задайте название scrWidth . Снабдите полосу текстовым пояснением «Толщина линии» .

Теперь следует определить соответствие между положением бегунка полосы и числовым значением свойства Value .

Выполните следующие установки из редактора свойств:

1. В Мах занесите десять, а в Min - единицу. Свойства Мах и Min полосы скроллинга отвечают за границы значений, записываемых в Value при перемещении бегунка.

2. Определите начальное положение бегунка полосы. Нажмите кнопку в строке с названием свойства и в появившемся окне Value измените значение на единицу.

3. Обратитесь к свойству SliderStep . Его значением является вектор из двух компонентов, первый из которых определяет относительное изменение Value при нажатии на кнопки со стрелками полосы скроллинга, а второй - при перетаскивании бегунка мышью. Следует установить значение и нажатие на кнопки полосы изменит Value на десять процентов, а щелчок мыши справа или слева от бегунка надвадцать. Раскройте строкуSliderStep щелчком мыши по знаку плюс слева от названия свойства и в появившихся строках х и у введите 0.1 и 0.2.

Листинг 9.

Изменение толщины линии.

mygui . m :

thePlot = getappdata(handles.axMain, "plot");

Изменение толщины линии при построении.

drawPlot.m

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

3.4.5 Область ввода текста

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

На панели инструментов выберем область ввода текста Edit Text и зададим для него имя editTitle . Изменим значение текстового поля по умолчанию на пустое (очистим поле String ).

Листинг 10.Изменение заголовка графика.

mygui . m

if ispc

else

end

title(get(hObject, "String"))

drawPlot.m

графический приложение программирование matlab

3.5 Диалоговые окна и меню приложения

3.5.1 Окно подтверждения

В системе MATLAB существует возможность добавления диалоговых окон (рис. 5), например, для отката случайных нажатий кнопок. Следует вывести диалоговое окно, в котором пользователь подтвердит, действительно ли требуется очистить график.

Рис. 5 Диалоговое окно

Функция questdlg создаетдиалоговое окно подтверждения, которая в самом простом случае имеет два входных параметра - строки с текстом внутри диалогового окна изаголовок окна. Но при добавлении еще трех строк мы можем изменить имена кнопок (по умолчанию Yes , No , Cancel ).

Изменим существующий файлplotClearDialog . m так, как показано в листинге 11.

Листинг 11.

Добавим возникновение диалогового окна при вызове

plotClearDialog.m :

function plotClearDialog(hObject, handles)

yesButton = "Да";

noButton = "Нет";

message = "Очистить график";

if strcmp(button, yesButton)

cla

end

Уберем из обработчика кнопки «Очистить » разблокирование кнопки для построения.

mygui.m :

function btnClear_Callback(hObject, eventdata, handles)

plotClearDialog(hObject, handles);

3.5.2 Чтение данных из файла

Среда MATLAB предоставляет возможность сохранять и загружать объекты в бинарном или текстовом формате. Для загрузки сохранения файла используются команды load иsave ,загружающие и сохраняющие файлы соответственно.Создайте и запишите входные данные в файле data . txt , имя сохраняемого вектора должно быть mymatrix .

Функция errordlg предназначена для создания диалогового окна с сообщением об ошибке. Входными аргументами errordlg являются строки с текстом и заголовком окна.

Листинг 12. Диалог выбора источника данных для графика.

plotDialog.m :

default = "По умолчанию";

fromFile = "Из файла";

errorCaption = "Ошибка!";

result = questdlg(dialogCaption, "mygui", default, fromFile, default);

if strcmp(result, fromFile)

try

mymatrix = load("data.txt");

catch

end

sMatrix = size(mymatrix);

errordlg(errorMessage, errorCaption)

end

x = mymatrix(:,1);

y = mymatrix(:,2);

end

if strcmp(result, default)

x = -2.5: 0.6: 2;

y = exp(-x.^2);

end

drawPlot(x, y, handles)

Уберем из обработчика кнопки «Построить» функцию drawPlot и заменим на plotDialog .

mygui.m

function btnPlot_Callback(hObject, eventdata, handles)

set(hObject, "Enable", "off");

set(handles.btnClear, "Enable", "on");

plotDialog(hObject, handles)

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

3.5.4 Оконные меню

В пакете MATLAB так же можно реализовать контекстные и оконные меню. Свойство Menu Bar окна приложения объекта figure отвечает за наличие стандартных меню File , Edit , Tools , Window и Help в работающем приложении. Размещение и программирование меню производится при помощи редактора меню.

Запустите редактор меню (рис. 6) из панели управления, или выбором пункта меню Tools , затем Menu Editor .

Рис. 6 Окно редактора меню

Окно редактора меню содержит две вкладки для: Menu Bar - для строки меню приложения, Context Menu s - для контекстного меню. Нажмите на соответствующую кнопку на панели инструментов редактора меню и создайте меню приложения. В навигаторе появилась строка Untitled 1 (рис. 7), сделайте ее текущей щелчком мыши.

Рис. 7 Окно создания меню приложения

В поле Label задается надпись элемента, a Tag - имя объекта. Введите текст "График " в строку Label и задайте имя mnGraph . Далее следует создать пункты меню. Нажав на кнопку New Menu Item , создастся новый подпункт меню. Установите надпись пункта « Построить» и дайте ему имя mnGraphPlot . Добавьте еще один подпункт меню, сделав предварительно текущей строку График в навигаторе. Аналогичным образом задайте надпись « Очистить» и имя mnGraphClear . Навигатор меню должен содержать структуру, изображенную на рисунке 8. Меню График имеет первый уровень, а пункты « Построить» , « Очистить» - второй.

Рис. 8 Меню приложения

Запустите программу. Выбор меню График приводит к раскрытию меню. Пока при обращении к пунктам « Построить» и « Очистить» ничего не происходит, следует запрограммировать обработчики событий пунктов меню. Добавьте обработчики меню вmygui . m и вplotClearDialog . m .

Листинг 13.

Устанавливаем необходимые значения кнопок для построения.

mygui.m :

plotDialog(hObject, handles)

plotClearDialog(hObject, handles)

Устанавливаем необходимые значения кнопок для удаления.

plotClearDialog.m :

3.5.6 Контекстные меню

Элементы управления, в том числе и созданные в ходе работы приложения, могут иметь собственное контекстное меню, которое доступны через нажатие ЛКМ.

Перейдите к вкладке Context Menus в редакторе меню и нажмите кнопку создания контекстного меню, в навигаторе меню появляется строка для меню. Задайте ему имя cmLine . Обратите внимание, что на панели свойств нет строки ввода Label , т. к. раскрывающееся меню не должно иметь надписи. Создайте три пункта меню при помощи кнопки New Menu Item . Определите для них надписи синий, красный , зеленый и имена cmLineBlue , cmLineRed , cmLineGreen соответственно (рис. 9).

Рис. 9 Контекстное меню

В работающем приложении щелчок правой кнопкой мыши по линии графика не приводит к отображению контекстного меню, так как сейчас контекстное меню cmLine присутствует в приложении как отдельный объект, не привязанный к построенной линии. Именно поэтому каждый созданный объект, имеет свойство UIContextMenu , значением которого может являться указатель на имеющееся контекстное меню. Следует установить свойству UIContextMenu значение указателя на меню cmLine , содержащееся в структуре handles . Построение линии в приложении производится или при нажатии пользователем кнопки « Построить» , или при выборе пункта « Построить» меню График . Напишем обработчик контекстного меню в mygui . m .

Листинг 14.

Изменение значения для контекстного меню.

mygui.m :

function cmLineBlue_Callback(hObject, eventdata, handles)

set(handles.pmColor, "Value", 1)

changeColor(handles)

function cmLineRed_Callback(hObject, eventdata, handles)

set(handles.pmColor, "Value", 2)

changeColor(handles)

function cmLineGreen_Callback(hObject, eventdata, handles)

set(handles.pmColor, "Value", 3)

changeColor(handles)

Внесение изменений в построение.

drawPlot . m

set(newPlot, "UIContextMenu", handles.cmLine)

3.5.7 Ввод пользовательской функции

Добавьте на форму новую область текста Edit Text с тегом userFunction и надпись «Пользовательский ввод». С помощью этого поля пользователь сможет ввести функцию с клавиатуры, и если ввод не корректен, следует вывести сообщение об ошибке errordlg . Изменим функцию plotDialog . m .

Листинг 15.

Добавление пользовательского ввода.

plotDialog . m

function plotDialog(hObject, handles)

default = "По умолчанию";

fromFile = "Из файла";

errorMessage = "Неизвестный формат файла с данными";

errorCaption = "Ошибка!";

dialogCaption = "Источник данных";

if strcmp(result, fromFile)

try

mymatrix = load("data.txt");

catch

errordlg(errorMessage, errorCaption)

end

sMatrix = size(mymatrix);

if (sMatrix(2) ~= 2 | ndims(mymatrix)~=2 | ~isnumeric(mymatrix))

errordlg(errorMessage, errorCaption)

end

x = mymatrix(:,1);

y = mymatrix(:,2);

end

if strcmp(result, userInput)

try

x = -2.5: 0.6: 2;

y = subs(y);

catch

end

end

if strcmp(result, default)

x = -2.5: 0.6: 2;

y = exp(-x.^2);

end

drawPlot(x, y, handles)

4. Задание на лабораторную работу

Цель данной лабораторной работы применение навыков создания приложений в среде GUIDE пакета MATLAB.

Постановка задачи: необходимо создать приложение, окно которого содержит графический элемент Axes , три кнопки, три поля ввода текста.

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

5. Заключение

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

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

Список литературы

1. Ануфриев И.Е. Самоучитель Matlab 5.3/6.x / И.Е. Ануфриев. СПб.: БХВ-Петербург, 2003. 736 с.

2. Дьяконов В.П. MATLAB 6.5 SPI/7 + Simulink 5/6 в математике и моделировании / В.П. Дьяконов. М.: СОЛОНПресс, 2005. 576 с. (Серия «Библиотека профессионала»).

Приложение

Листинг исходного кода функций

mygui . m

function varargout = mygui(varargin)

gui_Singleton = 1;

gui_State = struct("gui_Name", mfilename,...

"gui_Singleton", gui_Singleton,...

"gui_OpeningFcn", @mygui_OpeningFcn,...

"gui_OutputFcn", @mygui_OutputFcn,...

"gui_LayoutFcn", ,...

"gui_Callback", );

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

= gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

function mygui_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

optionsList = [ handles.rbMarkNone handles.rbMarkSq handles.rbMarkCirc ];

optionsValues = [ "n" "s" "o" ];

setappdata(hObject, "optionsList", optionsList);

setappdata(hObject, "optionsValues", optionsValues);

colors = ["b", "r", "g" ];

setappdata(hObject, "colors", colors);

handles.output = hObject;

guidata(hObject, handles);

function varargout = mygui_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function btnPlot_Callback(hObject, eventdata, handles)

set(hObject, "Enable", "off");

set(handles.btnClear, "Enable", "on");

plotDialog(hObject, handles)

function btnClear_Callback(hObject, eventdata, handles)

plotClearDialog(hObject, handles);

function chbxGridX_Callback(hObject, eventdata, handles)

set(handles.axMain, "XGrid", mapValue(hObject, "Value"));

function chbxGridY_Callback(hObject, eventdata, handles)

set(handles.axMain, "YGrid", mapValue(hObject, "Value"));

function MarkGroup_SelectionChangeFcn(hObject, eventdata, handles)

changeMarker(handles)

function pmColor_Callback(hObject, eventdata, handles)

changeColor(handles)

set(hObject,"BackgroundColor","white");

end

function scrWidth_Callback(hObject, eventdata, handles)

try

thePlot = getappdata(handles.axMain, "plot");

set(thePlot, "LineWidth", round(get(hObject, "value")))

catch

end;

function scrWidth_CreateFcn(hObject, eventdata, handles)

if isequal(get(hObject,"BackgroundColor"), get(0,"defaultUicontrolBackgroundColor"))

set(hObject,"BackgroundColor",[.9.9.9]);

end

function editTitle_Callback(hObject, eventdata, handles)

title(get(hObject, "String"))

function editTitle_CreateFcn(hObject, eventdata, handles)

if ispc

set(hObject,"BackgroundColor","white");

else

set(hObject,"BackgroundColor",get(0,"defaultUicontrolBackgroundColor"));

end

if ispc && isequal(get(hObject,"BackgroundColor"), get(0,"defaultUicontrolBackgroundColor"))

set(hObject,"BackgroundColor","white");

end

function mnGraphPlot_Callback(hObject, eventdata, handles)

plotDialog(hObject, handles)

set(handles.mnGraphPlot,"Enable","off");

set(handles.mnGraphClear,"Enable","on");

set(handles.btnPlot,"Enable","off");

set(handles.btnClear,"Enable","on");

function mnGraphClear_Callback(hObject, eventdata, handles)

plotClearDialog(hObject, handles)

if ispc && isequal(get(hObject,"BackgroundColor"), get(0,"defaultUicontrolBackgroundColor"))

set(hObject,"BackgroundColor","white");

end

changeColor.m

function changeColor(handles)

try

thePlot = getappdata(handles.axMain, "plot");

colors = getappdata(handles.figure1, "colors");

set(thePlot, "Color", colors(get(handles.pmColor, "value")))

catch

;

end

changeMarker.m

function changeMarker(handles)

try

thePlot = getappdata(handles.axMain,"plot");

markers = getappdata(handles.figure1,"optionsValues");

set(thePlot, "Marker", markers(getMarkerValue(handles)))

catch

;

end

drawPlot.m

function drawPlot(xVector, yVector, handles)

newPlot = plot(xVector, yVector);

setappdata(handles.axMain, "plot", newPlot);

changeMarker(handles)

changeColor(handles)

set(handles.axMain, "XGrid", mapValue(handles.chbxGridX, "Value"));

set(handles.axMain, "YGrid", mapValue(handles.chbxGridY, "Value"));

set(newPlot, "LineWidth", round(get(handles.scrWidth, "value")))

title(get(handles.editTitle, "String"))

getMarkerValue.m

function markerValue = getMarkerValue(handles)

markerValue = getSelectedOption(getappdata(handles.figure1, "optionsList"));

getSelectedOption.m

function index = getSelectedOption(hObjectList)

index = 1;

for counter = (1: length(hObjectList))

if get(hObjectList(counter), "value") == 1

index = counter;

return

end

end

mapValue.m

function retval = mapValue(hObject, property)

if get(hObject, property)

retval= "On";

else

retval="Off";

end

plotClearDialog.m

function plotClearDialog(hObject, handles)

yesButton = "Да";

noButton = "Нет";

message = "Очистить график";

button = questdlg(message, "mygui", yesButton, noButton, noButton);

if strcmp(button, yesButton)

cla

set(handles.axMain, "YGrid", mapValue(handles.chbxGridY, "Value"))

set(handles.axMain, "XGrid", mapValue(handles.chbxGridX, "Value"))

set(handles.btnClear,"Enable","off");

set(handles.btnPlot,"Enable","on");

set(handles.mnGraphPlot,"Enable","on");

set(handles.mnGraphClear,"Enable","off");

end

plotDialog.m

function plotDialog(hObject, handles)

default = "По умолчанию";

fromFile = "Из файла";

userInput = "Пользовательский ввод";

errorMessage = "Неизвестный формат файла с данными";

errorCaption = "Ошибка!";

dialogCaption = "Источник данных";

result = questdlg(dialogCaption, "mygui", default, fromFile, userInput, default);

if strcmp(result, fromFile)

try

mymatrix = load("data.txt");

catch

errordlg(errorMessage, errorCaption)

end

sMatrix = size(mymatrix);

if (sMatrix(2) ~= 2 | ndims(mymatrix)~=2 | ~isnumeric(mymatrix))

errordlg(errorMessage, errorCaption)

end

x = mymatrix(:,1);

y = mymatrix(:,2);

end

if strcmp(result, userInput)

try

x = -2.5: 0.6: 2;

y = sym(get(handles.userFunction, "String"));

y = subs(y);

catch

errordlg("Ошибка разбора пользовательской функции", errorCaption)

end

end

if strcmp(result, default)

x = -2.5: 0.6: 2;

y = exp(-x.^2);

end

drawPlot(x, y, handles)

Размещено на Allbest.ru

Подобные документы

    Изучение программирования в MATLAB. Использование команд Save и Load, операторы ввода и вывода для работы в командном окне. Отладка собственных программ. Интерфейс MATLAB. Отличия поздней версии MATLAB от более ранних. Средство Source Control Interface.

    контрольная работа , добавлен 25.12.2011

    Математическая основа параллельных вычислений. Свойства Parallel Computing Toolbox. Разработка параллельных приложений в Matlab. Примеры программирования параллельных задач. Вычисление определенного интеграла. Последовательное и параллельное перемножение.

    курсовая работа , добавлен 15.12.2010

    Общая характеристика и свойства системы Matlab - пакета прикладных программ для решения задач технических вычислений. Разработка математической модели в данной среде, программирование функций для задающего воздействия. Проектирование GUI-интерфейса.

    курсовая работа , добавлен 23.05.2013

    Разработка программного кода и алгоритма действий приложения "калькулятор". Использование функций в программе Matlab. Разработка кнопок, опций, интерфейса, оформление. Части кода Matlab и тестовый набор. Инструкция пользователя по работе программы.

    курсовая работа , добавлен 27.09.2014

    Выбор параметров и структурой схемы. Программирование скрипта (m-файла) для задания исходных параметров. Расчет параметров регулятора, проектирование его S-функции. Программирование GUI-интерфейса: разработка внешнего вида и проектирование обработчиков.

    курсовая работа , добавлен 18.05.2013

    Особенности работы в режиме командной строки в системе Matlab. Переменные и присваивание им значений. Комплексные числа и вычисления в системе Matlab. Вычисления с использованием функции sqrt. Неправильное использование функций с комплексными аргументами.

    дипломная работа , добавлен 30.07.2015

    Исследование линейных динамических моделей в программном пакете Matlab и ознакомление с временными и частотными характеристиками систем автоматического управления. Поиск полюса и нуля передаточной функции с использованием команд pole, zero в Matlab.

    лабораторная работа , добавлен 11.03.2012

    Matlab - матричная лаборатория - система программирования для научно-технических расчетов. Особенности ввода векторов. Специальные матрицы, простые команды. Простые примеры, иллюстрирующие эффективность Matlab. Графический способ решения уравнений.

    реферат , добавлен 05.01.2010

    Создание приложений: ProgressBar, вычисление по формуле, двумерный массив, калькулятор, медиа-плеер, одномерный массив, список, текстовый редактор. Создание различных обработчиков событий. Разработка заставки, окна ввода пароля и главной формы.

    лабораторная работа , добавлен 22.01.2015

    Моделирование траектории движения космического аппарата, запускаемого с борта космической станции, относительно Земли. Запуск осуществляется в направлении, противоположном движению станции, по касательной к её орбите. Текст программы в среде Matlab.

После загрузки MATLAB появляется Рабочий стол MATLAB , содержащий визуальные инструменты для управления файлами, переменными и приложениями, связанными с системой MATLAB (рис. 4.1). Рабочий стол состоит из строки заголовка, строки главного меню, панели инструментов, области для размещения окон инструментальных средств и строки состояния с кнопкой Start. На Рабочем столе может быть представлено любое сочетание из представленных ниже инструментальных средств:

· окно запуска приложений (Launch Pad);

· окно команд (Command Window);

· окно истории команд (Command History);

· окно просмотра помощи (Help Browser);

· окно просмотра текущей директории (Current Directory Browser);

· окно просмотра Рабочей области (Workspace Browser);

· окно Редактора данных (Array Editor);

· Редактор m– файлов (Editor/ Debugger);

· Профайлер (Profiler), оценивающий быстродействие команд.

Рис. 4.1. Рабочий стол системы MATLAB.

Помимо указанных инструментальных средств в систему MATLAB входят не управляемые посредством Рабочего стола графические окна (Figures), предназначенные для визуализации результатов вычислений.

Для управления окнами инструментальных средств предназначены команды меню View . Например, команда Desktop Layout открывает меню, в котором размещаются команды, предназначенные для отображения на Рабочем столе системы различных комбинаций инструментальных средств. Наиболее используемым расположением окон инструментальных средств при работе с системой MATLAB является расположение, принятое по умолчанию. Это расположение при необходимости можно установить командой View→ Desktop Layout→Default .

Для осуществления операций на файловом уровне предназначены команды меню File . Так с помощью подменю New можно открыть приложение для создания нового m – файла (Editor/ Debugger ), динамической модели(SIMULINK ), графического интерфейса пользователя (GUIDE ), а также создать новое графическое окно. Команда Save Workspace as… позволяет сохранять данные, расположенные в рабочей области, на диске в виде двоичных файлов с расширением .mat . Для этих же целей служит и команда save . Например, вызов команды save fname X позволит записать значение переменной X в файл fname.mat . Следует отметить, что возможности сохранения всего текста сессии, формируемой в командном режиме, команда save не дает, для этого служит команда diary . Например, вызов команды diary filename приведет к записи на диск всех команд в строках ввода и полученных результатов в виде текстового файла с именем filename.m. Кроме того, в системе предусмотрена возможность приостановки записи в файл с помощью команды diary off и возобновления ранее прерванной записи с помощью команды diary on.

Для загрузки рабочей области ранее сохраненной сессии предназначена команда load . Например, для загрузки ранее сохраненного файла myf_1.mat следует вызвать команду load myf_1.mat . Если команда load используется в ходе проведения сессии, то произойдет замена текущих значений переменных теми значениями, которые были сохранены ранее в считываемом МАТ-файле. При этом для задания имен загружаемых файлов может использоваться знак *, означающий загрузку всех файлов с определенными признаками. Например, load lab*.mat означает загрузку всех файлов с началом имени lab , например lab_1 , lab_2 , lab_3 и т. д.

Для завершения работы с системой можно использовать команды exit , quit или комбинацию клавиш Ctrl+Q . Если необходимо сохранить значения всех переменных системы, то перед вводом команды exit следует дать команду save . В этом случае команда load после загрузки системы считает значения сохраненных переменных и позволит начать работу с системой с того момента, когда она была прервана.

Команды меню Edit позволяют отменять(Undo ) или возвращать (Redo ) отмененное действие, обмениваться информацией с буфером обмена (Cut– Вырезать , Copy – Копировать , Paste – Вставить , PasteSpecial – Специальная вставка ), полностью выделять содержимое текущего окна (Selectall ), а также очищать окно команд (ClearCommandWindow ), окно истории команд (ClearCommandHistory ) и содержимое рабочей области (ClearWorkspace ).

Команды меню Web позволяют перейти на страницу сайта фирмы разработчика системы MATLAB. Для переключения между окнами m– файлов, окнами библиотек блоков приложения SIMULINK, окнами моделей систем предназначены команды меню Windows . Доступ к справочной информации предоставляют команды меню Help .

Командное окно (Command Window) предназначено для ввода команд и вывода результатов их выполнения в текстовом режиме. Работа с командным окном происходит в диалоговом режиме. Пользователь вводит команду в командную строку после приглашения >> и нажимает Enter , после чего команда передается ядру системы MATLAB. Ядро проверяет команду на синтаксические ошибки и, в случае их отсутствия, выполняет команду и возвращает результат. В противном случае выводится сообщение об ошибке.

По умолчанию в командное окно результат выводится в числовом формате shortG . Изменить формат вывода числа можно с помощью диалогового окна Preferences , которое вызывается одноименной командой меню File . В данном окне после активизации инструментального средства Command Window из раскрывающегося списка поля Numeric format , расположенного внутри группы Text display , следует выбрать необходимый формат. Помимо этого сменить текущий формат можно также с помощью команды format . Список форматов вывода числовых данных представлен в таблице 4.1.

Таблица 4.1. Форматы вывода числовых данных.

Формат Описание Пример
short Короткое число с фиксированной точкой (под дробную часть отводится четыре разряда) 1.3333
long Длинное число с фиксированной точкой (под дробную часть отводится четырнадцать разрядов) 1.33333333333333
shortE Короткое число с плавающей точкой (под дробную часть отводится четыре разряда) 1.3333e+000
longE Длинное число с плавающей точкой (под дробную часть отводится пятнадцать разрядов) 1.333333333333338e+007
shortG Выбирается наилучшая форма представления числа из форматов short и short e
longG Выбирается наилучшая форма представления числа из форматов long и long e
hex Число выводится в шестнадцатеричной форме 4010СВ
bank Формат представления долларов и центов 69.96
+ Символьное обозначение числа: «+» – положительное число; «-» – отрицательное число; пробел – нулевое значение.
rational Число выводится в дробном виде 1/3

Заметим, что задание формата сказывается только на форме вывода чисел и не влечет за собой изменения самого числа.

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

Конец работы -

Эта тема принадлежит разделу:

Основы работы в среде MATLAB

Основы работы в среде MATLAB.. Цель работы.. uuml получить навыки работы с основными элементами интерфейса системы MATLAB..

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ:

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

В этой категории мы рассмотрим эффективные действия, необходимые для работы с
программой MATLAB, а также для подготовки и презентации результатов сессии
этой программы. Здесь будут рассматриваться возможности интерфейса
программы MATLAB и использование М-файлов. Мы познакомим вас с новой
командой MATLAB 7, командой publish, с помощью которой осуществляется
форматированный вывод. Мы также дадим вам несколько простых советов по отладке
ваших М-файлов.


Matlab интерфейс программы

Начиная с версии 6, программа MATLAB имеет интерфейс, который называется
Рабочий стол программы MATLAB (далее - Рабочий стол). В этот интерфейс
входит окно Command Window (Командное окно), рассмотренное в главе 2.

Рабочий стол

По умолчанию Рабочий стол включает в себя четыре окна:
окно Command Window (Командное окно) в правой части Рабочего стола, окна
Current Directory (Текущий каталог) и Workspace (Рабочая область) в верхней
левой части и окно Command History (История команд) в нижней левой части.
Обратите внимание, что для переключения между окнами Current Directory
(Текущий каталог) и Workspace (Рабочая область) имеются вкладки,
повторяющие название окна. Вы можете управлять отображением окон с помощью
меню Рабочего стола (в версии 6 меню View (Вид)), расположенного в верхней
части Рабочего стола, кроме того, вы можете регулировать размеры окон
путем перетаскивания границ окон с помощью мыши. Окно Command Window
(Командное окно) представляет собой окно, в котором вы вводите команды и
инструкции, заставляющие программу MATLAB вычислять, рисовать и
выполнять множество других впечатляющих вещей, которые описываются в этой
книге. Остальные окна мы рассмотрим в особом разделе далее в этом уроке.
Рабочий стол включает в себя строку меню и панель инструментов. Панель
инструментов содержит значки (ярлыки), предоставляющие доступ к некоторым
элементам программы, которые вы можете выбрать через меню. Многие
элементы меню имеют также клавиатурные комбинации, которые отображаются справа
от пункта меню. Некоторые из этих клавиатурных комбинаций зависят от вашей
операционной системы, в основном мы не будем их упоминать. Тем не менее, вы
можете счесть эту возможность полезной и использовать клавиатурные
комбинации в своей работе для вызова пунктов меню, которые вами наиболее часто
применяются.

Каждое окно на Рабочем столе содержит две маленькие кнопки в верхнем правом
углу. Одна из них, имеющая вид [х], позволяет закрыть окно, а другая, в виде
изогнутой стрелки, позволяет открепить окно от Рабочего стола (вернуть окно
обратно на Рабочий стол вы можете, выбрав команду меню Desktop => Dock (Рабочий
стол => Закрепить) на открепленном окне или щелкнув на изогнутой стрелке,
расположенной в строке меню).

  • Хотя Рабочий стол предоставляет некоторые новые возможности и общий интерфейс для версий программы MATLAB под управлением операционных систем Windows и Unix, тем не менее, программа с открытым Рабочим столом может работать гораздо медленнее, чем базовый интерфейс окна Command Window (Командное окно), особенно на старых компьютерах. Чтобы работать в программе MATLAB со старым интерфейсом, необходимо запустить программу с помощью команды matlab -nodesktop

Рабочая область

В главе 2 вы-познакомились с командами clear и whos, которые можне-исполь-
зовать для отслеживания переменных, заданных вами в течение сессии
программы MATLAB. Все переменные находятся в области памяти компьютера,
называемой «Рабочей областью». Полный перечень заданных переменных отображается
в одноименном окне Workspace (Рабочая область). Отобразить это окно вы
можете, введя команду workspace, или, при открытом Рабочем столе, щелкните
мышью на вкладке Workspace (Рабочая область) в нижней части окна Current
Directory (Текущий каталог). Окно Workspace (Рабочая область) содержит список
текущих переменных и их размеры (но не значения переменных). Если вы
дважды щелкнете мышью на переменной, значение переменной будет отображено в
новом окне, называемом Array Editor (Редактор массива), которое вы можете
использовать для редактирования отдельных элементов в векторах и матрицах.
(Это окно можно также открыть, введя команду openvar и имя интересующей
вас переменной.) Вы можете удалить переменную из «рабочей области», выделив
ее в окне Workspace (Рабочая область) и выбрав команду меню Edit => Delete
(Редактирование => Удалить).
Если вам необходимо прервать сессию и вы не хотите впоследствии вычислять
все повторно, то вы можете сохранить текущую «рабочую область» с помощью
команды save. Например, после ввода команды save xnyfile будут сохранены
значения всех заданных текущих переменных в файле с именем myfile.mat. Чтобы
сохранить только значения переменных X и Y, введите следующее:

>> save myfile X Y

Когда вы начинаете новую сессию и желаете восстановить значения этих
переменных, используйте команду load. Например, введение команды load myfile
восстановит значения всех переменных, сохраненных в файле myfile.mat.

  • По умолчанию переменные сохраняются в двоичном формате, который является обычным для программы MATLAB, но вы можете также сохранять и загружать данные (команды save и load) в текстовом формате ASCII. Чтобы узнать подробности, обратитесь к онлайновой справке для этих команд. Эта возможность может быть полезна для обмена данными с другими программами.

Текущий каталог и путь поиска

Новые файлы, которые вы создаете в программе MATLAB, будут храниться в
вашем текущем каталоге. Имя этого каталога отображается на панели
инструментов Рабочего стола, а файлы и подкаталоги, которые содержит текущий каталог,
отображаются в окне Current Directory (Текущий каталог). Отобразить имя
текущего каталога вы можете также с помощью команды pwd («print working
directory» (Отобразить рабочий каталог)) в окне Command Window (Командное
окно), и можете также получить список содержимого текущего каталога, введя
команду dir или Is.

  • Термин «папка» в настоящее время употребляется более широко, чем «каталог»; для файловой системы компьютера между ними нет разницы. Мы будем использовать термин «каталог», поскольку программа MATLAB использует этот термин в своей документации. Однако в интерфейсе программы иногда используется и термин «папка», например, в столбце File Type (Тип файла) в окне Current Directory (Текущий каталог).

У вас может возникнуть желание сменить текущий каталог по умолчанию, или вы
захотите держать отдельные каталоги для различных проектов. Вы можете
изменить текущий каталог в программе MATLAB, используя команду cd, окно Current
Directory (Текущий каталог) или открывающийся список Current Directory
(Текущий каталог) на панели инструментов Рабочего стола. Вы можете ввести имя
каталога в это поле и нажать клавишу (Enter). выбрать каталог, которым вы
пользовались ранее, щелкнув мышью на кнопке со стрелкой в правой части поля, или
выбрать каталог, щелкнув мышью на значке (...) Browse for folder (Обзор папок),
расположенном справа от поля.
Например, на компьютере под управлением операционной системы Windows
текущим каталогом по умолчанию является подкаталог с именем work,
расположенный в каталоге установки программы MATLAB; например, это может быть
каталог C:\MATLAB7\work. Вы можете создать новый каталог, скажем, ProjectA,
внутри него, введя команду mkdir ProjectA. Вы можете также щелкнуть правой
кнопкой мыши в окне Current Directory (Текущий каталог) и выбрать команду
меню New => Folder (Создать => Папка) или щелкнуть мышью на значке New folder
(Новая папка), расположенном на панели инструментов этого окна. Затем
введите команду cd ProjectA или дважды щелкните на ней мышью в окне Current
Directory (Текущий каталог), чтобы сделать этот каталог вашим текущим
каталогом. После этого вы сможете работать с файлами данного каталога в текущей
сессии программы MATLAB.

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