Как построить точки в матлабе
Как построить точки в матлабе
Обычная графика MATLAB
Построение графиков точками и отрезками прямых
Графики в логарифмическоми полулогарифмическом масштабе
Гистограммы и диаграммы
Графики специальных типов
Создание массивов данных для трехмерной графики
Построение графиков трехмерных поверхностей, сечений и контуров
Средства управления подсветкой и обзором фигур
Средства оформления графиков
Одновременный вывод нескольких графиков
Управление цветовой палитрой
Окраска трехмерных поверхностей
Двумерные и трехмерные графические объекты
Одно из достоинств системы MATLAB — обилие средств графики, начиная от команд построения простых графиков функций одной переменной в декартовой системе координат и кончая комбинированными и презентационными графиками с элементами анимации, а также средствами проектирования графического пользовательского интерфейса (GUI). Особое внимание в системе уделено трехмерной графике с функциональной окраской отображаемых фигур и имитацией различных световых эффектов.
Описанию графических функций и команд посвящена обширная электронная книга в формате PDF. Объем материала по графике настолько велик, что помимо вводного описания графики в уроке 3 в этой книге даются еще два урока по средствам обычной и специальной графики. Они намеренно предшествуют систематизированному описанию большинства функций системы MATLAB, поскольку графическая визуализация вычислений довольно широко используется в последующих материалах книги. При этом графические средства системы доступны как в командном режиме вычислений, так и в программах. Этот урок рекомендуется изучать выборочно или выделить на него не менее 4 часов.
Построение графиков отрезками прямых
Функции одной переменной у(х) находят широкое применение в практике математических и других расчетов, а также в технике компьютерного математического моделирования. Для отображения таких функций используются графики в декартовой (прямоугольной) системе координат. При этом обычно строятся две оси — горизонтальная X и вертикальная Y, и задаются координаты х и у, определяющие узловые точки функции у(х). Эти точки соединяются друг с другом отрезками прямых, т. е. при построении графика осуществляется линейная интерполяция для промежуточных точек. Поскольку MATLAB — матричная система, совокупность точек у(х) задается векторами X и Y одинакового размера.
Команда plot служит для построения графиков функций в декартовой системе координат. Эта команда имеет ряд параметров, рассматриваемых ниже.
plot (X, Y) — строит график функции у(х), координаты точек (х, у) которой берутся из векторов одинакового размера Y и X. Если X или Y — матрица, то строится семейство графиков по данным, содержащимся в колонках матрицы.
Приведенный ниже пример иллюстрирует построение графиков двух функций — sin(x) и cos(x), значения функции которых содержатся в матрице Y, а значения аргумента х хранятся в векторе X:
На рис. 6.1 показан график функций из этого примера. В данном случае отчетливо видно, что график состоит из отрезков, и если вам нужно, чтобы отображаемая функция имела вид гладкой кривой, необходимо увеличить количество узловых точек. Расположение их может быть произвольным.
Рис. 6.1. Графики двух функций в декартовой системе координат
plot(Y) — строит график у(г), где значения у берутся из вектора Y, a i представляет собой индекс соответствующего элемента. Если Y содержит комплексные элементы, то выполняется команда plot (real (Y). imag(Y)). Во всех других случаях мнимая часть данных игнорируется.
Вот пример использования команды plot(Y):
Соответствующий график показан на рис. 6.2.
Рис. 6.2. График функции, представляющей вектор Y с комплексными элементами
plot(X.Y.S) — аналогична команде plot(X.Y), но тип линии графика можно задавать с помощью строковой константы S.
Значениями константы S могут быть следующие символы.
Matlab построить график по точкам
Построение графика по узловым точкам
Графики в Matlab, так же как в табличном процессоре, могут быть построены по узловым точкам. Поскольку Matlab — матричная система, совокупность узловых точек у(х) для построения графика задается векторами X и Y одинакового размера.
Графики Matlab строит в отдельных окнах, называемых графическими окнами. С первого взгляда видны отличия графического окна, показанного на рис. 4.5, от командного окна Matlab. В главном меню окна появилась позиция Tools (Инструменты), которая позволяет вывести или скрыть инструментальную панель, видимую в верхней части окна графики на рис. 4.5. Средства этой панели позволяют легко управлять параметрами графиков и наносить на них текстовые комментарии в любом месте.
Рис. 4.5. График, построенный с помощью функции plot
В Matlab для построения графиков функций по узловым точкам в декартовой системе координат служит функция plot. Функция plot имеет несколько синтаксических конструкций:
— plot (X, Y) — строит график функции у(х), координаты точек (х, у) которой берутся из векторов одинакового размера Y и X. Если X или Yматрица, то строится семейство графиков по данным, содержащимся в колонках матрицы;
Значениями константы S могут быть символы, приведенные в табл. 4.5.
Построение графиков в matlab командой plot. Она работает с векторами числовых данных. Синтаксис команды представляет собой: plot (X, Y), где X и Y являются векторами одинаковой длины.
Например вот такой график по точкам matlab:
X = [1 2 3]; Y = [4 6 5]; plot (X, Y)
Рис. 2.5. Построение линейных сегментов
• В этом случае мы отделили несколько команд в одной строке с помощью точки
с запятой, вместо запятой. Обратите внимание, что вывод команд,
предшествующих знаку точка с запятой, запрещается.
Команда plot рассматривает вектора X и Y, как перечни координат
последовательных точек на графике, и соединяет точки в виде линейных
сегментов. Таким образом, на Рис. 2.5 показано, как программа MATLAB
соединяет точки с координатами (1, 4), (2, 6) и (3, 5).
Результат отображен на Рис. 2.6. Обратите внимание, что мы использовали точку
с запятой, чтобы запретить вывод вектора X из 301 элемента.
Рис. 2.6. Построенная парабола
Более подробно графические команды программы MA TLAB рассматриваются в уроке 5.
А пока удовлетворимся демонстрацией построения пары выражений на одном и
том же графике. Надеюсь теперь вы получили подробный ответ на свой вопрос: как строить графики в matlab.
Поэтому из выше всего сказанного можно сделать вывод, что вам необходимо просмотреть много дополнительной информации и альтернатив!
MATLABимеет исключительно мощную систему для построения различных двухмерных и трехмерных графиков, а также их настройки, редактирования и форматирования. Типы и подтипы графиковMATLABочень разнообразны. Список функций двумерной графики можно получить командойhelp graph2d, трехмерной –help graph3d.
Графики выводятся в отдельных графических окнах с помощью команды вида figure(n), гдеn – номер графического окна. На одном графике можно построить несколько кривых, отличающихся цветом и типами линий и точек. Графики могут быть скопированы и вставлены в другие приложения:Word,Excel,PowerPointи др. Для этого используется командаEdit/ Copy Figureокна графики.
Часто используемые команды при построении графиков
plot(t,y) % График непрерывной функции y(t)
plot(x1, y1, x2, y2) % Графики зависимостей y1 от x1 и y2 от x1
stem(x,y) %График дискретной функции (сигнала)y(x)
stairs(x,y) % График в виде ступенчатой линии
loglog(f,Y) %График с логарифмическими масштабами по x и y
semilogx(f,Y) %Логарифмический масштаб поxи линейный поy
polar(phi,r) % График в полярных координатах
title(‘ название’) % Вывод заголовка графика
xlabel(‘время’) % Метка по осиx
ylabel(‘Напряжение’) % Метка по осиy
legend(‘АЧХ системы‘) % Вывод поясняющей надписи
axis([xmin, xmax, ymin, ymax]) % Установка масштабов по осямxи y
xlim([xmin,xmax]) % Установка масштаба по осиx
ylim([ymin,ymax]) % Установка масштаба по осиy
figure(n) % Устанавливает фигуру (окно)nактивной
subplot(r,c,n) % Разбивает графическое окно наr * cподокон иsubplot(rcn) % устанавливает подокноn в качестве активного.
gridon% к графику добавляется сетка
holdon% позволяет построить несколько графиков в окне
holdoff% отменяетholdonдля текущего графика
text% позволяет разместить текст на графике
zoomon/off% включение / выключение возможности увеличения % фрагментов графика с использованием
% левой и правой кнопок мыши
Построение графика зависимости функции yот индекса массива (номера элемента)x
Построение графика зависимости y(x)
Несколько пар аргументов в функции plot()позволяют построить несколько графиков в одном графическом окне. При этомMATLABдля каждого графика использует отдельный цвет линии.
Для разбиения графического окна на подокна служит команда plot(m,n,p)илиplot(mnp),в которойm– число строк,n– число столбцов,p– номер подокна. Пример построения графика функциив двух подокнах с помощью функцииplot()в одном случае и функцииstem()в другом с разными пределами по оси аргумента (рис. 7):
t=linspace(0, 8, 401); % вычисление 402 точек в интервале [0,8]
Fs=1024; % Частота отсчетов
f1=50; % частота гармоники
N=512; % число отсчетов сигнала
t=0:1/Fs:(N-1)/Fs; % вектор времени
plot(t,x), grid % график сигнала
Для добавления графиков к уже существующим применяют команду hold on
Для отмены действия hold on (освобождения окна графики) используют hold off.
Пример построения графика в полярной системе координат
В окне графики MATLABпозволяют выполнять разнообразную настройку графического окна и его объектов с помощью меню или панели инструментов (рис.9).
В окне редактора или с помощью контекстного меню по правой кнопке мыши производятся необходимые установки (цвет, размер, тип, толщина линии и др.) объекта окна графики.
Возможности для подобной интерактивной настройки графики – очень широкие. В первую очередь они обеспечиваются кнопкой Edit Plot инструментальной панели окна.
Трехмерная графика MATLAB– очень развитая и многообразная, сама по себе очень важная часть программы, но в курсе «Сигналы и системы» она используется редко.
Некоторые из команд построения 3D– графиков
>> plot3(…) % строит аксонометрическое изображение 3D-поверхности
>> mesh(…) % строит трехмерные поверхности со специфицированной
Пример построения графика передаточной функции системы второго порядка с передаточной функцией .
Нули и полюса системы :
Урок 7 — Графики в Matlab. Построение графиков и таблиц в Матлабе
1. Построение таблиц значений функции одной переменной в пакете MatLab
Отображение функции в виде таблицы удобно, если имеется сравнительно небольшое число значений функции. Пусть требуется вывести в командное окно таблицу значений функции
в точках 0.2, 0.3, 0.5, 0.8, 1.3, 1.7, 2.5.
Задача решается в два этапа.
1. Создается вектор-строка х, содержащая координаты заданных точек.
2. Вычисляются значения функции y(х)от каждого элемента вектора х и записываются полученные значения в вектор-строку у.
Значения функции необходимо найти для каждого из элементов вектор-строки х, поэтому операции в выражении для функции должны выполняться поэлементно.
Обратите внимание, что при попытке использования операций возведения в степень ^, деления / и умножения * (которые не относятся к поэлементным) выводится сообщение об ошибке уже при возведении sin(x) в квадрат:
» у = sin(х)^2/(1+соз(х))+exp(-x)*log(x)
. Error using ==> ^
Matrix must be square.
Дело в том, что в MatLab операции * и ^ применяются для перемножения матриц соответствующих размеров и возведения квадратной матрицы в степень.
Таблице можно придать более удобный для чтения вид, расположив значения функции непосредственно под значениями аргумента:
Часто требуется вывести значение функции в точках отрезка, отстоящих друг от друга на равное расстояние (шаг). Предположим, что необходимо вывести таблицу значений функции y(х)наотрезке [1, 2] с шагом 0.2. Можно, конечно, ввести вектор-строку значений аргумента х=[1, 1.2, 1.4, 1.6, 1.8, 2.0] из командной строки и вычислить все значения функции так, как описано выше. Однако, если шаг будет не 0.2, а, например 0.01, то предстоит большая работа по вводу вектора х.
В MatLab предусмотрено простое создание векторов, каждый элемент которых отличается от предшествующего на постоянную величину, т.е. на шаг. Для ввода таких векторов служит двоеточие (не путайте с индексацией при помощи двоеточия). Следующие два оператора приводят к формированию одинаковых вектор-строк. Условно можно записать
» х = [1, 1.2, 1.4, 1.6, 1.8, 2.0]
х =
1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
» х = [1:0.2:2]
х =
1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
Условно можно записать
х = [начальное значение : шаг : конечное значение]
Необязательно заботиться о том, чтобы сумма предпоследнего значения шага равнялась бы конечному значению, например, при выполнении следующего оператора присваивания
» х = [1:0.2:1.9]
х =
1.0000 1.2000 1.4000 1.6000 1.8000
Вектор-строка заполнится до элемента, не превосходящего определенное нами конечное значение. Шаг может быть и отрицательным:
» х = [1.9:-0.2:1]
х =
1.9000 1.7000 1.5000 1.3000 1.1000
В случае отрицательного шага для получения непустой вектор-строки начальное значение должно быть больше конечного.
Для заполнения вектор-столбца элементами, начинающимися с нуля и заканчивающимися 0.5 с шагом 0.1, следует заполнить вектор-строку, а затем использовать операцию транспонирования:
Обратите внимание, что элементы вектора, заполняемого при помощи двоеточия, могут быть только вещественными, поэтому для транспонирования можно использовать апостроф вместо точки с апострофом.
Шаг, равный единице, допускается не указывать при автоматическом заполнении:
» х = [1:5]
х =
1 2 3 4 5
Пусть требуется вывести таблицу значений функции
на отрезке [0, 1] с шагом 0.05,
Для выполнения этого задания необходимо произвести следующие действия:
1. Сформировать вектор-строку х при помощи двоеточия.
2. Вычислить значения у(х)отэлементов х.
3. Записать результат в вектор-строку y.
4. Вывести хи у.
2. Построение графиков функции одной переменной
2.1. Графики функций в линейном масштабе
MatLab обладает хорошо развитыми графическими возможностями для визуализации данных. Рассмотрим в начале построение простейшего графика функции одной переменной на примере функции
,
определенной на отрезке [0, 1]. Вывод функции в виде графика состоит из следующих этапов:
1. Задание вектора значений аргумента х.
2. Вычисление вектора у значений функции y(х).
3. Вызов команды plot для построения графика.
Команды для задания вектора х и вычисления функции лучше завершать точкой с запятой для подавления вывода в командное окно их значений (после команды plot точку с запятой ставить необязательно, т. к. она ничего не выводит в командное окно).
» х = [0:0.05:1];
» у = ехр(-х).*sin(10*x);
» plot(x, у)
После выполнения команд на экране появляется окно Figure No. 1 с графиком функции. Окно содержит меню, панель инструментов и область графика. В дальнейшем будут описаны команды, специально предназначенные для оформления графика. Сейчас нас интересует сам принцип построения графиков и некоторые простейшие возможности визуализации функций.
Для построения графика функции в рабочей среде MatLab должны быть определены два вектора одинаковой размерности, например х и у. Соответствующий массив х содержит значения аргументов, а у — значения функции от этих аргументов. Команда plot соединяет точки с координатами (x(i), y(i)) прямыми линиями, автоматически масштабируя оси для оптимального расположения графика в окне. При построении графиков удобно расположить на экране основное окно MatLab и окно с графиком рядом так, чтобы они не перекрывались.
Построенный график функции имеет изломы. Для более точного построения графика функцию необходимо вычислить y(х) в большем числе точек на отрезке [0, 1], т.е. задать меньший шаг при вводе вектора х:
» х = [0:0.01:1];
» у = ехр(-х).*sin(10*x);
» plot(x, у)
при помощи следующей последовательности команд:
» х = [-1:0.005:-0.3];
» f = sin(x.^-2);
» g = sin(1.2*x.^-2);
» plot(x, f, x, g)
Функции необязательно должны быть определены на одном и том же отрезке. В этом случае при построении графиков MatLab выбирает максимальный отрезок, содержащий остальные. Важно только в каждой паре векторов абсцисс и ординат указать соответствующие друг другу вектора, например:
» х1 = [-1:0.005:-0.3];
» f = sin(x1.^-2);
» х2 = [-1:0.005:0.3];
» g = sin(1.2*x2.^-2);
» plot(x1, f, x2, g)
Аналогичным образом при помощи задания в plot через запятую пар аргументов вида: вектор абсцисс, вектор ординат, осуществляется построение графиков произвольного числа функций.
Замечание 1
» х = [0.5:0.01:3];
» f = х.^-3;
» F = 1000*(х+0.5).^-4;
» plotyy(x, f, x, F)
При выполнении этого примера обратите внимание, что цвет графика совпадает с цветом соответствующей ему оси ординат.
Функция plot использует линейный масштаб по обеим координатным осям. Однако MatLab предоставляет пользователю возможность строить графики функций одной переменной в логарифмическом или полулогарифмическом масштабе.
2.2. Графики функций в логарифмических масштабах
Для построения графиков в логарифмическом и полулогарифмическом масштабах служат следующие функции:
— loglog (логарифмический масштаб по обеим осям);
— semilogx (логарифмический масштаб только по оси абсцисс);
-semilogy (логарифмический масштаб только по оси ординат).
Аргументы loglog, semilogx и semilogy задаются в виде пары векторов значений абсцисс и ординат так же, как для функции plot, описанной в предыдущем пункте. Построим, например, графики функций и
на отрезке [0.1, 5] в логарифмическом масштабе по оси х:
2.3. Задание свойств линий на графиках функций
Построенные графики функций должны быть максимально удобными для восприятия. Часто требуется нанести маркеры, изменить цвет линий, а при подготовке к монохромной печати — задать тип линии (сплошная, пунктирная, штрих-пунктирная и т.д.). MatLab предоставляет возможность управлять видом графиков, построенных при помощи plot, loglog, semilogx и semilogy, для чего служит дополнительный аргумент, помещаемый за каждой парой векторов. Этот аргумент заключается в апострофы и состоит из трех символов, которые определяют: цвет, тип маркера и тип линии. Используется одна, две или три позиции, в зависимости от требуемых изменений. В таблице приведены возможные значения данного аргумента с указанием результата.
Треугольник вершиной вниз
Треугольник вершиной вверх
треугольник вершиной вправо
2.4. Оформление графиков функций
Удобство использования графиков во многом зависит от дополнительных элементов оформления: координатной сетки, подписей к осям, заголовка и легенды. Сетка наносится командой grid on, подписи к осям размещаются при помощи xlabel, ylabel, заголовок дается командой title. Наличие нескольких графиков на одних осях требует помещения легенды командой legend с информацией о линиях. Все перечисленные команды применимы к графикам как в линейном, так и в логарифмическом и полулогарифмическом масштабах. Следующие команды выводят графики изменения суточной температуры, которые снабжены всей необходимой информацией.
» time = [0 4 7 9 10 11 12 13 13.5 14 14.5 15 16 17 18 20 22];
» temp1 = [14 15 14 16 18 17 20 22 24 28 25 20 16 13 13 14 13];
» temp2 = [12 13 13 14 16 18 20 20 23 25 25 20 16 12 12 11 10];
» plot(time, temp1, ‘ro-‘, time, temp2, ‘go-‘)
» grid on
» title(‘Суточные температуры’)
» xlabel(‘Время (час.)’)
» ylabel(‘Температура (С)’)
» legend(’10 мая, 11 мая’)
При добавлении легенды следует учесть, что порядок и количество аргументов команды legend должны соответствовать линиям на графике. Последним дополнительным аргументом может быть положение легенды в, графическом окне:
* —1 — вне графика в правом верхнем углу графического окна;
* 0 — выбирается лучшее положение в пределах графика так, чтобы как можно меньше перекрывать сами графики;
* 1 — в верхнем правом углу графика (это положение используется по умолчанию);
* 2 — в верхнем левом углу графика;
* 3 — в нижнем левом углу графика;
* 4 — в нижнем правом углу графика.
В заголовке графика, легенде и подписях осей допускается добавление формул и изменение стилей шрифта при помощи формата ТеХ.
MatLab выводит графики разным цветом. Монохромный принтер напечатает графики различными оттенками серого цвета, что не всегда удобно. Команда plot позволяет легко задать стиль и цвет линий, например
3. Построение графиков функций двух переменных
» [X, У] = meshgrid(0:0.2:1,0:0.2:1)
X =
0 0.2000 0.4000 0.6000 0.8000 1.0000
0 0.2000 0.4000 0.6000 0.8000 1.0000
0 0.2000 0.4000 0.6000 0.8000 1.0000
0 0.2000 0.4000 0.6000 0.8000 1.0000
0 0.2000 0.4000 0.6000 0.8000 1.0000
0 0.2000 0.4000 0.6000 0.8000 1.0000
y =
0 0 0 0 0 0
0.2000 0.2000 0.2000 0.2000 0.2000 0.2000
0.4000 0.4000 0.4000 0.4000 0.4000 0.4000
0.6000 0.6000 0.6000 0.6000 0.6000 0.6000
0.8000 0.8000 0.8000 0.8000 0.8000 0.8000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
Z =
0 0.0400 0.1600 0.3600 0.6400 1.0000
0.0400 0.0800 0.2000 0.4000 0.6800 1.0400
0.1600 0.2000 0.3200 0.5200 0.8000 1.1600
0.3600 0.4000 0.5200 0.7200 1.0000 1.3600
0.6400 0.6800 0.8000 1.0000 1.2800 1.6400
1.0000 1.0400 1.1600 1.3600 1.6400 2.0000
Какие недостатки имеет построенный график? И как их устранить? Построенный график и новый привести в электронном отчете по лабораторной работе.
Рассмотрим основные возможности, предоставляемые MatLab для визуализации функций двух переменных, на примере построения графика функции
на прямоугольной области определения х принадлежит [-1, 1], y [0, 1].
Подготовим матрицы с координатами узлов сетки и значениями функции:
» [X, Y] = meshgrid(-1:0.05:1, 0:0.05:1);
» Z = 4*sin(2*pi*X).*cos(1.5*pi*Y).*(1-Х.^2).*Y.*(1-Y);
Для построения каркасной поверхности используется функция mesh, вызываемая с тремя аргументами:
Цвет линий поверхности соответствует значениям функции. MatLab рисует только видимую часть поверхности.
При помощи команды hidden off можно сделать каркасную поверхность «прозрачной», добавив скрытую часть. Команда hidden on убирает невидимую часть поверхности, возвращая графику прежний вид.
Функция surf строит каркасную поверхность графика функции и заливает каждую клетку поверхности определенным цветом, зависящим от значений функции в точках, соответствующих углам клетки. В пределах каждой клетки цвет постоянный. Посмотрите результаты выполнения команды
Команда shading flat позволяет убирать каркасные линии. Для получения поверхности, плавно залитой цветом, зависящим от значений функции, предназначена команда shading interp.
При помощи shading faceted можно вернуться к поверхности с каркасными линиями.
Трехмерные графики, получаемые с помощью описанных выше команд, удобны для получения представления о форме поверхности, однако по ним трудно судить о значениях функции. В MatLab определена команда colorbar, которая выводит рядом с графиком столбик, устанавливающий соответствие между цветом и значением функции. Постройте при помощи surf график поверхности и дополните его информацией о цвете.
Команду colorbar можно применять в сочетании со всеми функциями, строящими трехмерные объекты.
Пользуясь цветной поверхностью, трудно сделать вывод о значении функции в той или иной точке плоскости xy. Команды meshc или surfc позволяют получить более точное представление о поведении функции. Эти команды строят каркасную поверхность или залитую цветом каркасную поверхность и размещают на плоскости xyлинии уровня функции (линии постоянства значений функции):
MatLab позволяет построить поверхность, состоящую из линий уровня, при помощи функции contour3. Эту функцию можно использовать так же, как и описанные выше mesh, surf, meshc и surfc с тремя аргументами. При этом число линий уровня выбирается автоматически. Имеется возможность задать четвертым аргументом в contour3 либо число линий уровня, либо вектор, элементы которого равны значениям функции, отображаемым в виде линий уровня. Задание вектора (четвертого аргумента levels) удобно, когда требуется исследовать поведение функции в некоторой области ее значений (срез функции). Постройте, например поверхность, состоящую из линий уровня, соответствующих значениям функции от 0 до 0.5 с шагом 0.01:
» levels = [0:0.01:0.5];
» contour3(X, Y, Z, levels)
» colorbar
4. Построение контурных графиков функций двух переменных
MatLab предоставляет возможность получать различные типы контурных графиков при помощи функций contour и contourf. Рассмотрим их возможности на примере функции
.
Использование contour с тремя аргументами
» [CMatr, h] = contour(X, Y, Z);
» clabel(CMatr, h)
» grid on
Дополнительным аргументом функции contour (так же, как и contour3, описанной выше) может быть или число линий уровня, или вектор, содержащий значения функции, для которых требуется построить линии уровня.
Наглядную информацию об изменении функции дает заливка прямоугольника на плоскости xyцветом, зависящим от значения функции в точках плоскости. Для построения таких графиков предназначена функция contourf, использование которой не отличается от применения contour. В следующем примере выводится график, который состоит из двадцати линий уровня, а промежутки между ними заполнены цветами, соответствующими значениям исследуемой функции:
» contourf(X, Y, Z, 20)
» colorbar
5. Оформление графиков функций
Простым и эффективным способом изменения цветового оформления графика является установка цветовой палитры при помощи функции colormap. Следующий пример демонстрирует подготовку графика функции для печати на монохромном принтере, используя палитру gray.
» surfc(X, Y, Z)
»colorbar
» colormap(gray)
» title(‘График функции z(x,y)’)
» xlabel(‘x’)
» ylabel(‘у’)
» zlabel(‘z’)
Обратите внимание, что команда colormap(gray) изменяет палитру графического окна, т.е. следующие графики будут выводиться в этом окне также в серых тонах. Для восстановления первоначального значения палитры следует применить команду colormap(‘default’). Цветовые палитры, доступные в MatLab, приведены в табл. 2.
Таблица 2
Похожа на палитру gray, но с легким оттенком синего цвета.
Каждый цвет изменяется от темного к яркому.
Оттенки голубого и пурпурного цветов.
Оттенки медного цвета.
Плавное изменение как цветов радуги.
Похожа на палитру gray, но с легким оттенком коричневого цвета
Оттенки пурпурного и желтого.
Оттенки зеленого и желтого.
Палитра Windows из шестнадцати цветов.
Оттенок синего и зеленого.
6. Вывод нескольких графиков на одни оси
Для отображения нескольких графиков функций одной переменной на одних осях использовались возможности функций plot, plotyy, semilogx, semilogy, loglog. Они позволяют выводить графики нескольких функций, задавая соответствующие векторные аргументы парами, например plot(x,f,x,g). Однако для объединения трехмерных графиков их использовать нельзя. Для объединения таких графиков предназначена команда hold on, которую нужно задать перед построением графика. В следующем примере объединение двух графиков (плоскости и конуса) приводит к их пересечению. Конус задается параметрически следующими зависимостями:
,
,
,
.
Далее формируются матрицы X, Y, содержащие значения функций и
в точках, соответствующих значениям параметров. Формирование матриц выполняется с помощью внешнего произведения векторов.
Замечание 2
Внешним произведением векторов ,
называется матрица
размера N x M, элементы которой вычисляются по формуле
.
Вектор а является вектор-столбцом ив MatLab представляется в виде двумерного массива размера N на один. Вектор-столбец bпри транспонировании переходит в вектор-строку размера один на М. Вектор-столбец и вектор-строка есть матрицы, у которых один из размеров равен единице. Фактически, С = abT, где умножение происходит по правилу матричного произведения. Для вычисления матричного произведения в MatLab используется оператор «звездочка». Определим внешнее произведение для двух векторов:
» a = [1;2;3];
» b = [5;6;7];
» C = a*b’
C =
5 6 7
10 12 14
15 18 21
Сформируем матрицы X,Y, необходимые для графического отображения конуса:
» X = 0.3*u*cos(v);
» Y = 0.3*u*sin(v);
Матрица Z должна быть того же размера, что и матрицы X иY. Кроме того, она должна содержать значения, соответствующие значениям параметров. Если бы в функцию входило произведение и и v, то матрицу Z можно было заполнить аналогично матрицам Xи Yпри помощи внешнего произведения. С другой стороны, функцию z(u,v)можно представить в виде
, где
. Поэтому для вычисления Zможно применить внешнее произведение векторов
и
, где вектор-строка
имеет ту же размерность, что v, но состоит из единиц:
Все требуемые матрицы для отображения конуса созданы. Задание плоскости выполняется следующим образом:
» [X,Y] = meshgrid(-2:0.1:2);
» Z = 0.5*X+0.4*Y;
Теперь не сложно записать и полную последовательность команд для построения пересекающихся конуса и плоскости:
» u = [-2*pi:0.1*pi:2*pi]’;
» v = [-2*pi:0.1*pi:2*pi];
» X = 0.3*u*cos(v);
» Y = 0.3*u*sin(v);
» Z = 0.6*u*ones(size(v));
» surf(X, Y, Z)
» [X,Y] = meshgrid(-2:0.1:2);
» Z = 0.5*X+0.4*Y;
» hold on
» mesh(X, Y, Z)
» hidden off
Команда hidden off применена для того, чтобы показать часть конуса, находящуюся под плоскостью.
Обратите внимание, что команда hold on распространяется на все последующие выводы графиков в текущее окно. Для размещения графиков в новых окнах следует выполнить команду hold off. Команда hold on может применяться и для расположения нескольких графиков функций одной переменной, например,
» plot(х,f)
» hold on
» plot(x,g)