Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы 9 10 по курсу СМРТМ.doc
Скачиваний:
40
Добавлен:
03.12.2018
Размер:
493.06 Кб
Скачать

Основные сведения о графической системе среды matlab

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

Кривые, поверхности и другие графические объекты строятся в специальном графическом окне (figure). Первое обращение в сеансе к графической команде автоматически вызывает появление окна, которому присваивается первый номер. Чтобы организовать новое окно или перейти от одного окна к другому, нужно выбрать пункт New Figure в меню File командного или графического окна. Для того чтобы перейти к имеющемуся окну с номером N или организовать новое окно, достаточно в строке ввода ввести команду figure N. Явно вызванная внутри программы функция figure('Name', 'Figure name') позволяет задать графическому окну с именем 'Figure name' те параметры, которые более предпочтительны, исходя из логики дальнейших действий. Одновременно может быть открыто несколько графических окон. В MATLAB для сохранения рисунка имеется большой выбор форматов графических файлов, причем рисунок можно записать, используя меню графического окна или выполнив команду в программе.

Основная команда двумерной графики plot строит графики кривых с абсциссами x1, x2, … и ординатами y1, y2, … и имеет следующий формат: p1ot( x1, y1, s1, x2, y2, s2, … ). Наиболее типичный вариант ее использования выглядит следующим образом: p1ot( x, y ). Здесь x и y – векторы одинаковой длины, задающие соответствующие координаты точек, выводимых на график. По умолчанию точки соединяются сплошными линиями синего цвета. Дополнительные параметры, представленные строками s1, s2, ..., позволяют задать тип, толщину и цвет рисуемой кривой, а также форму и размер маркера.

При построении графика выбор масштаба и построение осей совершаются автоматически, а для изменения масштабов применяется команда axis. Чтобы определить интервалы изменения координат самостоятельно, нужно выполнить команду: axis( [xmin, xmax, ymin, ymax] ). Здесь числа xmin и xmax задают интервал изменения горизонтальной координаты (минимальное и максимальное значения), а ymin и ymax – соответственно интервал изменения вертикальной координаты. Если нужно сохранить автоматическое масштабирование по какой-нибудь оси, то в качестве значения следует поставить идентификатор Inf (или -Inf). Характерные применения команды axis сведены в таблице.

Команда

Действие

axis(axis)

Использование текущего масштаба для последующих графиков (фиксация текущих назначений)

axis(auto)

Восстановление режима автомасштабирования

v = axis

Получение вектора с текущими значениями масштаба

axis('ij')

Размещение начала отсчета в левом верхнем углу (матричная система координат)

axis('xy')

Размещение начала отсчета в левом нижнем углу (декартова система координат)

axis off

Отключение обозначения осей и насечек

axis on

Восстановление осей и насечек

Для коррекции размеров рисунка используются стили масштабирования, позволяющие установить одинаковый масштаб по обеим переменным и согласовать область вывода. Для указания нужного стиля STYLE нужно выполнить команду: axis STYLE. Стили масштабирования для команды axis приведены в таблице.

Имя

Описание

square

Область вывода — квадрат

normal

Масштабирование по умолчанию. MATLAB выбирает диапазон и разметку по собственному алгоритму

equal

Одинаковый масштаб по осям

tight

Изображаемые данные занимают всю область вывода

auto

Включение автомасштабирования

manual

Масштабирование вручную

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

Объект

Назначение

Root

Корневой объект, соответствующий экрану и создаваемый MATLAB автоматически в начале сеанса

Figure

Графическое окно на экране

Uicontrol

Пользовательский интерфейс (кнопки, прокрутки и т. д.)

Axes

Физическая область в окне

Uimenu

Пользовательское меню

Image

Двумерный образ, задаваемый массивом

Line

Базисный примитив линии

Patch

Базисный примитив закрашенного многоугольника

Surface

Базисный примитив поверхности

Text

Строки символов

Light

Источники света, действующие на объекты в пределах области, определенной Axes

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

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

Значение дескриптора для корневого объекта равно нулю, а для окна (Figure) совпадает с его номером. Для остальных объектов дескрипторы задаются вещественными числами, содержащими информацию, используемую MATLAB. Для использования дескриптора графического объекта необходимо присвоить результат выполнения графической команды некоторой переменной. Эта переменная является дескриптором и предоставляет доступ к свойствам графического объекта. Информацию о свойствах графического объекта при помощи дескриптора позволяет получить функция get, а функция set служит для переопределения свойств объекта.

Чтобы переопределить свойство объекта при помощи функция set, достаточно указать несколько первых букв, специфицирующих свойство объекта. Чтобы получить перечень возможных значений какого-нибудь свойства Prop, надо выполнить команду set(h, 'Prop').

В таблице ниже приведены функции, предоставляющие доступ к часто используемым дескрипторам. Значения дескрипторов могут меняться в зависимости от платформы и сеанса. Эти функции можно использовать в качестве аргументов других функций. Например, удалить графическое окно можно по команде delete(gcf). Для очистки текущего окна достаточно выполнить команду clf, а для осей – cla.

Имя

Назначение

gcf

Получение дескриптора текущего окна (figure)

gca

Получение дескриптора осей (axes) для текущего окна (figure)

gco

Получение дескриптора текущего объекта для текущего окна (figure)

Каждый рисунок (окно Figure) имеет свою палитру, заданную матрицей с тремя столбцами и числом строк, отвечающим количеству заданных цветов. Три числа на одной строке, которые могут принимать значения от 0 до 1, определяют соответственно интенсивности красной, зеленой и синей компонент (RGB).

Для задания и изменения палитры используется команда colormap. По умолчанию стандартной является палитра jet, содержащая 64 цвета. Чтобы назначить новую палитру при помощи массива СС, нужно выполнить команду colormap(CC), а вернуть стандартную палитру можно при помощи команды colormap('default'). Обращение к команде colormap без параметров выводит матрицу с текущей палитрой.

Используя стандартные операции с массивами, можно приготовить свою палитру. В то же время имеется набор приготовленных палитр, в частности: hsv (радуга), hot (комбинации черного, красного, желтого и белого), cool (фиолетово-голубая палитра), summer (желто-зеленая палитра), bone (серо-синяя палитра), gray (оттенки серого). При обращении к любой из этих функций указывается параметр, задающий число цветов, а если параметр не указан, то формируется палитра с тем же числом цветов, что и текущая. Например, по команде colormap(gray(4)) сформируется палитра из четырех оттенков серого цвета.

Палитры необходимы при построении графических объектов: поверхностей с помощью команд mesh, surf и др., контурных рисунков (при помощи семейства команд contour), и т. д. Диапазон изменения цвета для текущей палитры можно сузить при помощи команды caxis([cmin cmax]). Здесь cmin и cmax определяют диапазон палитры (соответственно начальный и конечный цвета), который будет использоваться для окрашивания. Команда caxis без параметров выводит текущие значения cmin и cmax, команда caxis('auto') позволяет вернуться к автоматическому назначению цветов.