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

Guide Matlab инструкция img-1

Guide Matlab инструкция

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

Категория: Инструкции

Описание

Приложения с 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.

Другие статьи

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

Построение графического интерфейса в системе Matlab Введение Matlab - это система инженерных и научных вычислений. Она обеспечивает математические вычисления, визуализацию научной графики программирование и моделирование процессов с использованием интуитивно понятной среды окружения, когда задачи и их решения могут быть представлены в нотации, близкой к математической. Наиболее известные области применения системы Matlab : математика и вычисления; разработка алгоритмов; вычислительный эксперимент, имитационное моделирование, макетирование; анализ данных, исследование и визуализация результатов; научная и инженерная графика; разработка приложений, включая графический интерфейс пользователя. Основным объектом при программировании в среде Matlab является массив, для которого не требуется указывать размерность явно. Это позволяет решать многие вычислительные задачи, связанные с векторно-матричными формулировками. Система Matlab - это одновременно и операционная среда и язык программирования. Пользователь может написать специализированные функции и программы, которые оформляются в виде М-файлов. По мере увеличения количества созданных программ возникают проблемы их классификации и тогда можно попытаться собрать родственные функции в специальные папки. Это приводит к концепции пакетов прикладных программ, которые представляют собой коллекции М-файлов для решения определенной задачи или проблемы. CредасистемыMatlab Среда системы Matlab это совокупность интерфейсов, через которые пользователь поддерживают связь этой системой. Это: диалог посредством командной строки или графического интерфейса, просмотр рабочей области, редактор и отладчик М-файлов, работа с файлами и оболочкой DOS, экспорт и импорт данных, интерактивный доступ к справочной информации, динамическое взаимодействие с внешними системами MicrosoftWord. MicrosoftExcel и др. Реализуются эти интерфейсы через командное окно, инструментальную панель, системы просмотра рабочей области и путей доступа, редактор / отладчик М-файлов, специальные меню. Пользовательский интерфейс носит дружественный характер и построен с учетом устоявшихся принципов программного обеспечения, разрабатываемого для операционной системы Windows .

GUI в MATLAB - Matlab

GUI в MATLAB - Matlab

Хочу создать графический интерфейс для программы подсчета спектрального радиуса матрицы. Столкнулся с такой проблемой - как ввести матрицу?
По одному числу из поля edit считывается без проблем, а как ввести массив? Допустим, сначала вводится число - размерность матрицы, затем нужно ввести саму матрицу поэлементно. Пробовал написать в m-файле, как обычно, ввод через 2 вложенных цикла и вводить в поле edit числа через пробел, но не работает. Постоянно выдает какие-то ошибки.
В общем, как вводить и обрабатывать матрицы через графический интерфейс?
Надеюсь, кто-нибудь да знает. Спасибо!

41792 / 34177 / 6122

09.11.2010, 22:14 GUI в MATLAB

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.

10.11.2010, 16:23 GUI в MATLAB

Тебе надо для начала создать файл .fig там ты задашь полностью все, что тебе надо графически, окна ввода вывода, графики и тд. когда у тебя вся графическая часть будет введена, в .m file нужно сделать привязку к окнам ввода вывода данных, я себе мало представляю матрицы в GUI, но думаю можно. Продумай, как он будет выглядеть. Набор инструментов стандартный. Без .fig GUI не существует.

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

Заметки про 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 эта задача очень сильно упростилась, за это большое спасибо разработчикам этого тулбокса.

Общие сведения о MATLAB - Студопедия

Общие сведения о MATLAB

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

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

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

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

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

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

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

Версия MATLAB 6.1 - это предпоследнее достижение разработчиков (последнее - MATLAB 6.5).

Система MATLAB - это одновременно и операционная среда и язык программирования. Одна из наиболее сильных сторон системы состоит в том, что на языке MATLAB могут быть написаны программы для многократного использования. Пользователь может сам написать специализированные функции и программы, которые оформляются в виде М-файлов. Именно поэтому пакеты прикладных программ - MATLAB Application Toolboxes, входящие в состав семейства продуктов MATLAB, позволяют находиться на уровне самых современных мировых достижений.

Операционная среда системы MATLAB 6.1. Операционная среда системы MATLAB 6.1 - это множество интерфейсов, которые поддерживают связь этой системы с внешним миром через диалог с пользователем через командную строку, редактор М-файлов, взаимодействие с внешними системами Microsoft Word, Excel и др.

После запуска программы MATLAB на дисплее компьютера появляется её главное окно, содержащее меню. инструментальную линейку с кнопками и клиентскую часть окна со знаком приглашения . Это окно принято называть командным окном системы MATLAB (рис. 1).

Меню Файл (рис. 2) объединяет обычные функции: Правка отвечает за изменение содержания Окна команд (отмена, повтор, вырезать, копировать, вставить, выбрать всё, удалить и др.) и за очистку некоторых окон MATLAB; меню Вид – за оформление Рабочего стола; меню Web – запускает Web-страницы из Internet; меню Окно – работает с редактором/отладчиком М-файлов (закрывает все М-файлы, делает текущим один из них); меню Помощь – работает со справочной документацией и демонстрациями.

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

Инструментальная панель командного окна системы MATLAB позволяет обеспечить простой доступ к операциям над М-файлами: создание нового М-файла; открытие существующего М-файла; удаление фрагмента; копирование фрагмента; вставка фрагмента; восстановление только выполненной операции и др.

В клиентской части командного окна MATLAB после знака приглашения можно вводить различные числа, имена переменных и знаки операций, что в совокупности составляет некоторые выражения. Нажатие клавиши Enter заставляет систему MATLAB вычислить выражение или, если оно не вычисляется, повторить его. Хотя знак «;» в конце строки гасит вывод результата (эхо-вывод).

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

Итак, были подвергнуты разбору структурные части командного окна MATLAB. Но кроме них существуют ещё несколько элементов MATLAB, которые помогают при работе:

Команды - окно, содержащее по порядку введённые ранее команды в Окне команд («история команд»).

Рабочая область – это область памяти MATLAB, в которой размещены переменные системы. Содержимое этой области можно просмотреть из командной строки с помощью команд who (выводит только имена переменных) и whos (выводит информацию о размерах массивов и типе переменной) или в отдельном окне под тем же названием. В нём можно выполнить следующие операции: загрузить файл данных, сохранить Рабочую область как (команды позволяют открыть и сохранить содержимое рабочей области в двоичном MAT-файле), удалить выбранные переменные; открыть выбранные переменные (где можно изменить их значение). Кроме этого в меню Правка можно очистить как Окно команд и Историю команд, так и Рабочую область (или выполнить команду в Окне команд: clear ).

Для сохранения и запуска Рабочей области можно использовать команды load и save.

Saving to: matlab.mat

Loading from: matlab.mat

>> save my.mat

>> load my.mat

Текущий каталог – окно, являющееся своеобразным «проводником» по каталогам MATLAB.

Запустить Редактор – окно, отражающее дерево структурных элементов MATLAB и других установленных вместе с ним программных средств, которые можно запускать двойным левым щелчком мыши. Например, это окно может выглядеть, как показано на рис 9.

Редактор/отладчик М-файлов – один из важнейших структурных частей MATLAB, который может быть открыт выбором соответствующей опции в главном меню, на инструментальной панели или вызван из командной строки командой edit или edit <имя М-файла> и позволяющий создавать и редактировать М-файлы.

Редактор/отладчик поддерживает следующие операции: создание нового М-файла; открытие существующего М-файла; сохранение М-файла на диске; удаление фрагмента; копирование фрагмента; вставка фрагмента; помощь; установить/удалить контрольную точку; продолжить выполнение и др.

GUIDE – графический интерфейс пользователя, в котором происходит создание законченных приложений.

Интерактивный сеанс работы. М-файлы. Интерактивный режим – это пользовательский режим ввода с клавиатуры команд и выражений, в результате выполнения которых получаются необходимые числовые результаты, которые можно легко и быстро визуализировать встроенными графическими средствами пакета MATLAB. Но использование этого режима для создания и сохранения конкретной программы невозможно. Поэтому создатели MATLAB кроме Окна команд, в котором реализован интерактивный режим, выделили специальные файлы, содержащие коды языка MATLAB, и назвали M-файлами (*.m). Для создания M-файла используется текстовый редактор (редактор/отладчик М-файлов).

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

Раскройте меню File основного окна MatLab и в пункте New выберите подпункт M-file. Новый файл открывается в окне редактора M -файлов (рис. 10). Запишем в файл программу вычисления среднего арифметического пере-

менных a и b, затем сохраним с именем fun1.m. Сравните способы решения задачи, представленные в таблице.

Существует два типа M-файлов: М-сценарии и М-функции со своими характеристиками. Рассмотренные выше примеры fun1 и fun2 относятся к М-сценариям.

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

2. Не использует входных и выходных аргументов.

3. Оперирует с данными из рабочей области.

4. Структура М-сценария в отличие от М-функции не включает строку определения функции.

5. Запуск из Редактора/Отладчика выбором соответствующего пункта меню (Отладка/Запуск) или нажатием F5.

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

2. Использует входные и выходные аргументы.

3. По умолчанию, внутренние перемен­ные являются локальными по отношению к функции.

1) Строка определения функции задаёт имя, количество и порядок следования входных и выходных аргументов.

Например: function y = funa(x,a), где function - ключевое слово, определяющее М-функцию; y - выходной аргумент; funa - имя функции; x, а - входные аргументы.

Если функция имеет более одного выходного аргумента, список выходных аргументов помещается в квадратные скобки: function [x, y, z] = funb(t, p, r).

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

2) Комментарий выводится на экран после знака % в любом месте. Первая строка комментария отражается в Окне команд, когда пользователь запускает команду help <имя_функции>.

3) Тело функции - это программный код, который реализует вычисления и присваивает значения выходным аргументам.

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

При оперировании с М-файлами можно использовать следующие команды: вывести на экран имена файлов текущего каталога: what; вывести на экран текст M-файла fact.m: type fact.

Типы данных в MATLAB. Самое важное в структуре М-файлов это тело М-функции или М-сценария, которое содержит код языка MATLAB и выполняет вычисления и присваивает значения выходным аргументам. Операторы в теле функции или сценария могут состоять из вызовов функций, программных конструкций для управления потоком команд, интерактивного ввода/вывода, вычислений, присваиваний, комментариев и пустых строк. Но самое главное сначала разобраться с типами данных в MATLAB, а уже потом рассматривать синтаксис и построение М-языка.

В системе MATLAB определено шесть базовых типов данных, каждый из которых является многомерным массивом. Шесть классов - это double, char, sparse, uint8, cell, и struct. Двумерные версии этих массивов называются матрицами, откуда MATLAB и получил свое имя МАТричная ЛАБоратория.

Чаще всего приходится иметь дело только с двумя из этих типов данных: массив чисел удвоенной точности (double) и массив символов (char) или просто строка. Это связано с тем, что все вычисления в системе MATLAB выполняются с удвоенной точностью и большинство функций работают с массивами чисел удвоенной точности или строками.

Рабочая область MATLAB при введении переменных, описанных в таблице, представлена на рис. 10.

Схема принадлежности того или иного объекта системы MATLAB к одному из классов имеет вид, представленный на рис. 11. Соединительные линии на ней определяют принадлежность того или иного типа данных к одному или нескольким классам.

Обратите внимание, что тип array (массив) находится в вершине схемы. Это означает, что все данные системы MATLAB являются массивами (тип array является виртуальным).

Каждому типу данных можно соотнести свои функции и операторы обработки, или другими словами, методы. Дочерние типы данных, расположенные на диаграмме ниже родительского типа, поддержаны также и методами родителя. Следовательно, массив типа double поддержан методами, применяемыми для виртуального типа данных - numeric.

Переменные в MATLAB. Как и любая среда программирования, MATLAB оперирует с переменными, причём она различает заглавные и прописные переменные. То есть х и Х – совершенно разные переменные.

Переменные не надо объявлять заранее как в стандартных языках, но, как и в них, в среде системы MATLAB некоторые заложенные М-функции возвращают специальные переменные, которые играют важную роль при работе. Например, ans - последний результат, если выходная переменная не указана; pi - cпециальная переменная для числа «пи»: pi=3.141592653589793e+000; inf - специальная переменная для обозначения символа бесконечности; NaN - специальная переменная для обозначения неопределенного значения - результата операций типа: 0/0, inf/inf.

Соответствующие М-функции, генерирующие эти специальные переменные, находятся в каталоге MATLAB/toolbox/matlab/elmat и поддержаны online-подсказкой.

Особенности работы с числовыми массивами .

1) Элемент массива А, расположенный на пересечении строки i и столбца j, обозначается как А(i, j). Если будет сделана попытка обратиться к элементу вне матрицы, то программа выдаст ошибку, если же выполняется присвоение значения элементу с индексами, выходящими за пределы массива, то система MATLAB автоматически увеличивает размер матрицы и неизвестным элементам присваивает значение ноль.

2) Е сли в индексных выражениях использовать двоеточие, то можно ссылаться на подблоки массива. Так индексное выражение A(1:k, j) ссылается на блок из k элементов столбца j.

Однако существует способ лучше: двоеточие само по себе ссылается на все элементы строки или столбца:A(:,3).

Кроме того, начиная с версии 5.0, на последнюю строку или столбец массива можно ссылаться с помощью ключевого слова end. Таким образом, оператор A(. end) описывает последний столбец матрицы А.

3) Операция объединения отдельных подблоков в массив называется конкатенацией. Даже при формировании исходной матрицы, когда объединяются отдельные элементы, осуществляется операция конкатенации. Оператор конкатенации - это пара квадратных скобок [], внутри которых указываются отдельные элементы или блоки массива: B = [A A+32; A+48 A+16], где А - некоторая величина.

4) В системе MATLAB принято хранить каждый массив, независимо от его размерности, как вектор-столбец. Этот вектор образован объединением (конкатенацией) столбцов исходного массива. При обращении к массиву А с указанием единственного индекса происходит непосредственное обращение к этому вектору-столбцу. Обращение A(3) ссылается на третье значение в столбце; А(7) - на седьмое и так далее.

Операторы системы MATLAB. Встроенные функции. Для работы с переменными, числами и др. в системе MATLAB существуют необходимые операторы. Они делятся на три категории:

v Арифметические операторы позволяют конструировать арифметические выражения и выполнять числовые вычисления.

v Операторы отношения позволяют сравнивать числовые операнды.

v Логические операторы позволяют строить логические выражения и имеют самый низкий приоритет относительно операторов отношения и арифметических операторов.

Арифметические операторы допускают использование индексных выражений:

Операторы отношения . В системе MATLAB определено 6 следующих операторов отношения:

<= Меньше или равно

> = Больше или равно

Логические операторы . В состав логических операторов системы MATLAB входят следующие операторы: «&» - и; «|» - или; «

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

Кроме этих операторов (как и почти в любом языке программирования) существуют четыре основных оператора управления последовательностью исполнения инструкций: 1) оператор условия if, в сочетании с оператором else и elseif выполняет группу инструкций в соответствии с некоторыми логическими условиями; 2) оператор переключения switch, в сочетании с операторами case и otherwise выполняет различные группы инструкций в зависимости от значения некоторого логического условия; 3) оператор условия while выполняет группу инструкций неопределенное число раз, в соответствии с некоторым логическим условием завершения; 4) оператор цикла for выполняет группу инструкций фиксированное число раз. Все операторы управления включают оператор end, чтобы указать конец блока, в котором действует этот оператор управления. Подробнее говорить здесь об этом нецелесообразно, так цель данного раздела – дать общую характеристику математическому пакету MATLAB.

Визуализация результатов вычислений: графика. В результате вычислений в системе МАТLАВ обычно получается большой массив данных, который трудно анализировать без наглядной визуализации. По­этому система визуализации, встроенная в МАТLАВ, придает этому пакету осо­бую практическую ценность.

МАТLАВ показывает графические объекты в специальных графических ок­нах, имеющих в заголовке слово Figure (фигура, изображение).

Вот несколько действий, которые позволят добиться необходимой визуализации:

Построить график функции одной вещест­венной переменной: 1) вычислить массив у значений функции для заданного набора аргументов, 2) вызов функции plot.

>> x=0:0.01:2; >> y=sin(x); >> plot(x,y)

Построить два и более графиков в одной системе координат: команда hold on или функция plot(x1,y1,x2,y2,…,xn,yn). Последняя строит графики разным цветом

>> x=0:0.01:2; >> y1=sin(x); y2=cos(x); >> plot(x,y1) >> hold on >> plot(x,y2) >> plot(x,y1,x,y2)

Построить в одном графическом окне n графиков: функция subplot (<число рядов подобластей>, <число колонок подобластей>, <номер подобласти вдоль рядов с переходом на новый по окончанию>) перед функцией рlot.

<…> >> subplot(1,2,1); >> plot(x1,y1) >> subplot(1,2,2); >> plot(x2,y2) <…>

Функции построения графиков, рассмотренные выше, осуществляли вполне приемлемое автоматическое оформление графиков. А сейчас рассмот­рим дополнительные возможности, связанные с управлением внешним видом графиков - задание цвета и стиля линий, а также размещение различных надпи­сей в пределах графического окна.

Для изменения стиля линии и дискретных вычисляемых точек можно использовать функцию plot(x1,y1,'s1',x1,y2,'s2',…), которая позволяет объединить в одном графическом окне несколько графиков функций у1(х1), у2(х2). проведя их со стилями s1, s2. и т. д. Например, стиль линии определяется следующими маркерами: '-' – непрерывная; '--' – штриховая; ':' - пунктирная; '-.' – штрихпунктирная; цвет линии: 'k' – чёрный; 'r' – красный; 'b' – синий; тип точек: '.' – точка; '+' – плюс; '*' – звезда; 'о' – кружок и т.д.

>> plot(x,y,'o') % вычисляемые точки отмечены кружком

>> plot(x,y,'r+-') % красная непрерывная линия с точками-плюсами

>> plot(x,y,'+r-') % аналогичный результат

Если в строке стиля поставить маркер типа точки, но не проставить маркер на тип линии, то тогда отображаются только вычисляемые точки, а непрерывной линией они не соединяются.

Текущее значение любого параметра (атрибута, характеристики) графическо­го объекта можно узнать с помощью функции get. Чтобы ознакомиться со списком всех свойств графического объекта, нужно вызвать функцию get указав ей описатель объекта в виде единственного пара­метра. Например, для описателя hPlot объекта типа line находим весь список его свойств:

Среди всех этих свойств встречаются интуитивно понятные. В частности, мы видим значение толщины линии (LineWidth), равное 0,5; свойст­во Соlor отвечает за цвет линии: он равен [0 0 1] (RGB-кодировка, то есть Красный Зеленый Синий), что соответствует синему цвету. Для успешного при­менения иных свойств требуется их подробное и кропотливое изучение, без ко­торого, однако, вполне можно обойтись, так как наиболее важным свойствам система МАТLАВ присваивает по умолчанию вполне в среднем приемлемые значения. Они указываются в списке свойств справа от знака равно. Некоторые свойства не задействованы и являются резервом, который применяют в специ­альных случаях.

Теперь от оформления непосредственно линий перейдем к оформлению осей координат, к надписям на осях и т. д. Система МАТLАВ устанавливает пределы на горизонтальной оси равными тем значениям, что указаны пользователем для независимой переменной. Для зависимой переменной по вертикальной оси МАТLАВ самостоятельно вычисляет диапазон изменения значений функции. В результате график функции оказывается как бы вписанным в прямоугольник.

Если мы хотим отказаться от этой особенности масштабирования при по­строении графиков в системе МАТLАВ, то мы должны явным образом навязать свои пределы изменения переменных по осям координат. Это делается с помо­щью функции ахis([хmin, хmax, уmin, уmax]), причем команду на выполнение этой функции можно вводить с клавиатуры сколько угодно раз уже после построения графика функции, чтобы, глядя на по­лучающиеся визуальные изображения, добиться наилучшего восприятия. Такое масштабирование позволяет получить подробные изображения тех частей гра­фика, которые вызывают наибольший интерес в конкретном исследовании.

Теперь изменим количество числовых меток на осях. Их может показаться недостаточно. Изменить отметки на осях координат можно с помощью функции set обра­батывающей графический объект axes. Это объект, который содержит оси ко­ординат и белый прямоугольник, внутри которого проводится график функции. Для получения описателя такого объекта применяют функцию gca. Эту функ­цию вызывают без параметров. В итоге фрагмент кода

>> set (hAxes,'xtick',[1.5 1.75 2.0 2.25 2.5])

выполняющийся после построения графика, устанавливает новые метки (в коли­честве пяти штук) на горизонтальной оси координат.

Кроме того, используя команду grid on можно нанести измерительную сетку на всю область построения графика.

Для проставления различных надписей на полученном рисунке применяют функции xlabel, ylabel, title и text. Функция xlabel предназначена для проставления названия горизонтальной оси, функция уlabel - то же для верти­кальной оси.

Если требуется разместить надпись в произвольном месте рисунка, применя­ем функцию text, имеющую свои свойства: text (x,y,'some text'), где x,y – координаты точки, с которой начинается надпись. По умолчанию координаты задаются в тех же единицах измерения, что и координаты, указанные на горизонтальной и вертикальной осях. Специальные управляющие символы вводятся внутри тек­ста после символа \ (обратная косая черта). Обозначения для специальных символов совпадают с таковыми в системе подготовки научных текстов ТеХ. В частности, для вывода части текста в следующую строку применяется управляющий символ newline.

Общий заголовок для графика проставляется функцией title ('some text'), так же используемой язык TeX.

Завершая рассказ о способах оформления графиков функций, изменим цвет фона, на котором эти графики рисуются. По умолчанию этот цвет белый. Сдела­ем его слегка зеленоватым, присвоив цветовому свойству объекта типа ахеs значение [0.5 0.8 0.5]. Но сначала надо получить описатель этого объекта:

Функция gca предназначена для поиска описателя текущего объекта ахеs. Так как у нас имеется единственный объект ахеs, то проблемы выбора нет. Если бы было несколько областей, в которых рисуются графики функций, то есть не­сколько объектов типа ахеs, то в этом случае сначала нужно щелкнуть мышью на том из них, который должен стать текущим, и только после этого вводить представленный выше код.

Сменить цвет фона легко:

>> set (hАхеs, 'Со1ог', [ 0.5 0.8 0.5] );

Аналогично меняем цвет фона всего графического окна:

>> FigureColor = [ 0.8 0.5 0.5]; hFigure = gcf;

>> Set ( hFigure, 'Соlоr', FigureColor);

где с помощью функции gcf мы получаем описатель объекта типа figure, представляющего графическое окно, а далее меняем цвет его фона на краснова­тый.

Кроме двухмерной графики в систему MATLAB входят широкие возможности отображения трехмерных графических объектов. В частности, имеется возможность решать разнообразные задачи трехмерного моделирования объектов реального мира, опираясь на графические объекты типа рatch. Это исключительно обширный и непростой раздел со­временной компьютерной графики.

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

Высокоуровневая графическая подсистема МАТLАВ автоматически реализу­ет трехмерную графику без специальных усилий со стороны пользователя. Пусть в точке с координатами х1, у1 вычислено значение функции z=f(x,y) и оно равно z1. В некоторой другой точке (то есть при другом значении аргу­ментов) х2, у2 вычисляют значение функции z1. Продолжая этот процесс, получают массив (набор) точек (х1,у1,z1), (х2,у2,z2),…, (хN,уN,zN) в коли­честве N штук, расположенных в трехмерном пространстве. Специальные функ­ции системы МАТLАВ проводят через эти точки гладкие поверхности и отображают их проекции на плоский дисплей компьютера.

Чаще всего точки аргументов расположены в области определения функции регулярно в виде прямоугольной сетки (матрицы точек). Такая сетка точек порождает две числовые матрицы одной и той же структуры: первая матрица со­держит значения первых координат этих точек (х-координат), а вторая матрица содержит значения вторых координат (у-координат). Обозначим первую матри­цу как Х, а вторую - как У. Есть еще и третья матрица - матрица значений функ­ции z=f(x,y) при этих аргументах. Эту матрицу обозначим буквой Z.

В результате, для построения таких графиков вызов функции plot3 осуществляется в виде

>> рlot3( Х, У, Z )

где X, У и Z - матрицы одинаковых размеров, смысл которых мы только что объ­яснили.

В системе МАТLАВ имеется специальная функция для получения по одномерным массивам u, v двумерных массивов Х и У, представляющих первые и вторые координаты получающейся прямоугольной сетки точек: [X, У] = meshgrid(u,v) (примеры графиков см. в решении задач).

Таким образом, функция рlot3 строит график в виде набора линий (тип line) в пространстве, каждая из которых является сечением трехмерной поверхности плоскостями, параллельными плос­кости уОz. По-другому можно сказать, что каждая линия получается из отрезков прямых, соединяющих набор точек, координаты которых берутся из одинаковых столбцов матриц X, У и Z. То есть, первая линия соответствует первым столбцам матриц X, У, Z; вторая линия - вторым столбцам этих матриц и т. д.

Помимо этой простейшей функции система МАТLАВ располагает еще рядом функций, позволяющих добиваться большей реалистичности в изображении трехмерных графиков. Это функции mesh, surf и surfl. Они порождают гра­фические объекты типа surface.

Функция mesh и соединяет друг с другом все соседние точки поверхности графика отрезками прямых и показывает в графическом окне системы МАТLАВ плоскую проекцию такого объемного каркасно-ребристого (по-английски – wireframe mesh) тела. Каркасно-ребристое тело состоит из четырехугольных граней белого цвета, а ребра граней окрашиваются в разные цвета. По умолча­нию более высоким точкам графика соответствуют красные цвета, а более низ­ким (меньшие значения третьей координаты) - темно-синие. Промежуточные области окрашиваются в светло-синие, зеленые и желтые цвета. В результате, поскольку разные области поверхности графика (конкретно - ребра каркасного тела) окрашиваются в разные цвета, применение функции mesh порождает весь­ма наглядное изображение трехмерного графика.

Как мы уже говорили, для лучшего восприятия «объемности изображения» разные ребра автоматически окрашиваются в разные цвета. Если вы счи­таете, что изображенное ребристое тело является прозрачным и не должно скрывать задних ребер, то можно ввести команду hidden off, после чего такие линии появятся на изображении. В одних случаях это позволя­ет улучшить изображение, в других - нет. Всегда можно вернуться к имеющему место по умолчанию режиму сокрытия при помощи команды hidden on.

Более «плотного» изображения поверхности можно добиться за счет раскрас­ки разными цветами не ребер, а граней каркасно-ребристого тела. Для этого вместо функции mesh нужно применить функцию surf: surf (X, У, Z). В результате получается изображение, представляющее плотную (непрозрачную) сетчатую поверхность, причем отдельные ячейки (грани) этой сетчатой поверхности (плоские четырехугольники) автоматически окрашивают­ся в разные цвета.

Функция surfl в отличие от функции surf не применяет искусственных приемов закраски поверхности трехмерных графиков. Упрощённо говоря, эта функция сразу же исполь­зует понятие освещения поверхности графика. По умолчанию она использует встроенную засветку графика со стороны некоторой геометрической точки пространства. В результате точки поверхности графика, обращенные в сторону источника света (условно более яркие), изображаются красным цветом, а точки, находящиеся «в тени», - темно-синим.

Что касается оформления трёхмерных графиков, то многие приёмы совпадают с теми, что были рассмотрены при изучении плоских графиков: axis([xmin xmax ymin ymax zmin zmax]), text, xlabel, ylabel, zlabel и т.д.

Отличие состоит только в существовании для трёхмерной графики камеры и свойств её объектива. Главное из характеристик камеры – её положение. Оно определяется двумя углами, задающими ориентацию этой точки в пространстве: угол азимута (часто обозначают как az) и угол возвышения (обозначают el). Изменение первого угла означает вращение плоскости хОу вокруг оси Оz против часовой стрелки. Угол возвышения есть угол между направлением на точку обзора и плоскость хОу.

Когда выполняются высокоуровневые графические функции mesh, surf или surfl, то по умолчанию устанавливаются значения az=-37.5º, el=30º. Эти значения в любой момент времени можно изменить специальной функцией view([az,el]), где аргументы – новые углы.

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

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

Кроме этого, в MATLAB существуют возможности по показу движущихся векторных изображе­ний (например, динамическое построение графика, вращение трёхмерных графиков, изображение «броуновского движения»), что важно для визуализации динамических данных и для всестороннего изучения 30-объектов. Но мультимедийные способности пакета МАТLАВ базируются не только на анима­ции, но и на возможности воспроизводить звук (если на компьютере присутствует соответствующее оборудование) стандартного для платформы Windows формата WAVE (*.wav).

Аналитические вычисления с помощью пакета расширения Symbolic Math Toolbox. Сколь широки ни были бы возможности ядра системы МАТLАВ по предос­тавлению готовых услуг в области вычислений и компьютерной графики, всегда найдутся новые частные проблемы и целые предметные области, которые оста­лись неохваченными.

Для гибкого реагирования на такие ситуации архитектура пакета МАТLАВ построена таким образом, что имеется очень удобная техника встраивания в об­щую систему новых программных решений. Причем это встраивание происхо­дит прозрачным (незаметным) для пользователя образом. После инсталляции пакета расширения (по-английски - tооlbох) функциональные возможности этого пакета как бы сливаются с базовыми возможностями ядра системы МАТLАВ и ими становится возможным пользоваться абсолютно традиционными способами.

Пакеты расширения для системы МАТLАВ производят как фирма-изготовитель самого пакета МАТLАВ, так и сторонние производители. В настоящее время существуют десятки официально распространяемых пакетов расширения, среди которых существуют специальные математические пакеты для решения систем дифференциальных уравнений с частными производными (пакет Partial Differential Equations Тооlbох), для решения задач статистики (Statistics Тооlbох) и оптимизационных задач (Оptimization Тооlbох), дла решения задач обработки изображений (Image Processing Тооlbох; Wavelet Toolbox) и многих других задач.

Рассмотрим только основные возможности пакета расширения Symbolic Math Тооlbох, позволяющего в рамках системы МАТLАВ осуществлять аналитические вычисления и аналитические преобразо­вания выражений. Этот пакет лицензирован у фирмы Waterloo Марlе Software, Canada, и включен в состав дистрибутива пакета МАТLАВ на правах пакета расширения. Он столь органично дополняет и расширяет возможности ядра сис­темы МАТLАВ, что пропустить рассказ об этом пакете расширения было бы не­верно. Возможности пакета Symbolic Math Тооlbох поистине гигантские, поэто­му мы остановимся лишь на основных и наиболее характерных из них.

Помимо выполнения аналитических преобразований пакет Symbolic Math Тооlbох позволяет выполнить арифметические вычисления с контролируемой точностью, которую можно заказать заранее. С этого и начнем.

Пакет расширения Symbolic Math Тооlbох предоставляет для этой цели две функции - digits и vpa. Первая из этих функций устанавливает требуемую точность в количестве верных десятичных знаков после запятой, а вторая функ­ция осуществляет вычисления с заданной точностью. Аббревиатура vpa означа­ет Variable Precision Arithmetic, что переводится как «арифметика с переменной точностью».