>> x=-2*pi:0.1*pi:2*pi;
>> y1=sin(x);y2=sin(x).^2;
>> y2=sin(x).^2;
>> y3=sin(x).^3;
>>plot(x,y1,'-m',x,y2,'-.+r',x,y3,'--ok')
Здесь график функции y1 строится сплошной фиолетовой линией, график у2 строится штрих пунктирной линией с точками в виде знака «плюс» красного цвета, а график yЗ строится штриховой линией с кружками черного цвета.
Графики в логарифмическом масштабе
Для построения графиков функций со значениямиxи у, изменяющимися в широких пределах, нередко используются логарифмические масштабы. Рассмотрим команды, которые используются в таких случаях.
· loglogx(...) - синтаксис команды аналогичен ранее рассмотренному для функции plot(...). Логарифмический масштаб используется для координатных осей Xи Y. Ниже дан пример применения данной команды:
>> x=logspace(-1,3);
>> loglog(x,exp(x)./x) grid on
Функция x = logspace(d1, d2) формирует вектор-строку, содержащую 50 равноотстоящих в логарифмическом масштабе точек, которые покрывают диапазон от 10d1 до 10d2 .
Функция x =logspace(d1, d2, n) формирует вектор-строку, содержащую n равноотстоящих в логарифмическом масштабе точек, которые покрывают диапазон от 10d1 до 10d2.
На рисунке представлен график функции ехр(х)/хв логарифмическом масштабе. Командой gridon строится координатная сетка. Неравномерное расположение линий координатной сетки указывает на логарифмический масштаб осей.
Графики в полулогарифмическом масштабе
В некоторых случаях предпочтителен полулогарифмический масштаб графиков, когда по одной оси задается логарифмический масштаб, а по другой — линейный.
Для построения графиков функций в полулогарифмическом масштабе используются следующие команды: semilogx(...) — строит график функции в логарифмическом масштабе (основание 10) по оси X и линейном по оси Y; semilogy(...)— строит график функции в логарифмическом масштабе по оси Y и линейном по оси X.
Запись параметров (...) выполняется по аналогии с функцией plot(...). приведем пример построения графика экспоненциальной функции:
>> x=0:0.5:10;
>> semilogy(x,exp(x))
Нетрудно заметить, что при таком масштабе график экспоненциальной функции выродился в прямую линию. Масштабной сетки теперь уже нет.
Столбцовые диаграммы
Столбцовые диаграммы широко используются в литературе, посвященной финансам и экономике, а также в математической литературе. Ниже представлены команды для построения таких диаграмм.
· bar(x, Y) — строит столбцовый график элементов вектора Y(или группы столбцов для матрицы Y) со спецификацией положения столбцов, заданной значениями элементов вектора х, которые должны идти в монотонно возрастающем порядке;
· bar(Y)— строит график значений элементов матрицы Yтак же, как указано выше, но фактически для построения графика используется вектор х=1:m;
· bar(x,Y,WIDTH) илиbar(Y,WIDTH) — команда аналогична ранее рассмотренным, но со спецификацией ширины столбцов (при WIDTH > 1 столбцы в одной и той же позиции перекрываются). По умолчанию задано WIDTH = 0.8.
Возможно применение этих команд и в следующем виде: bar(.... 'Спецификация') для задания спецификации графиков, например типа линий, цвета и т. д., по аналогии с командой plot. Спецификация 'stacked' задает рисование всех n столбцов в позиции m друг на друге.
Пример построения столбцовой диаграммы матрицы размером 12x3 приводится ниже:
>> %Столбцовая диаграмма
>> subplot(2,1,1), bar(rand(12,3),stacked'), colormap(cool)
Помимо команды bar(...) существует аналогичная ей по синтаксису команда barh(...), которая" строит столбцовые диаграммы с горизонтальным расположением столбцов.
>> subplot(2,1,1), barh(rand(5,3), 'stacked'),colormap(cool)
Какое именно расположение столбцов выбрать, зависит от пользователя, использующего эти команды для представления своих данных.
Построение гистограмм
Классическая гистограмма характеризует числа попаданий значений элементов вектора Y в М интервалов с представлением этих чисел в виде столбцовой диаграммы. Для получения данных для гистограммы служит функция hist, записываемая в следующем виде:
· N=hist(Y) — возвращает вектор чисел попаданий для 10 интервалов, выбираемых автоматически. Если Y — матрица, то выдается массив данных о числе попаданий для каждого из ее столбцов;
· N=hist(Y,M) — аналогична вышерассмотренной, но используется М интервалов (М- скаляр);
· N=hist(Y,X) — возвращает числа попаданий элементов вектора Y в интервалы, центры которых заданы элементами вектора X;
· [N,X]=HIST(...) — возвращает числа попаданий в интервалы и данные о центрах интервалов.
Команда hist(...) с синтаксисом, аналогичным приведенному выше, строит график гистограммы. В следующем примере строится гистограмма для 1000 случайных чисел и выводится вектор с данными о числах их попаданий в интервалы, заданные вектором x:
>> x=-3:0.2:3;
>> y=randn(1000,1);
>> hist(y,x)
>> h=hist(y,x)
h =
Columns 1 through 9
0 0 3 7 8 9 11 23 33
Columns 10 through 18
43 57 55 70 62 83 87 93 68
Columns 19 through 27
70 65 41 35 27 21 12 5 6
Columns 28 through 31
3 2 1 0
Нетрудно заметить, что распределение случайных чисел близко к нормальному закону. Увеличив их количество, можно наблюдать еще большее соответствие этому закону.
Создание массивов данных для трехмерной графики
Трехмерные поверхности обычно описываются функцией двух переменных z(x,y). Специфика построения трехмерных графиков требует не просто задания ряда значений xи у, то есть векторов x и у. Она требует определения для X и Y двумерных массивов - матриц. Для создания таких массивов служит функция meshgrid. В основном она используется совместно с функциями построения графиков трехмерных поверхностей. Функция meshgrid записывается в следующих формах:
· [X,Y] = meshgrid(x) - аналогична [X,Y] = meshgrid(x, x);
· [X,Y,Z] = meshgrid(x, y, z) - возвращает трехмерные массивы, используемые для вычисления функций трех переменных и построения трехмерных графиков;
· [X,Y] = meshgrid(x,y) - преобразует область, заданную векторами x и у, в массивы X и Y, которые могут быть использованы для вычисления функции двух переменных и построения трехмерных графиков. Строки выходного массива X являются копиями вектора x; а столбцы Y — копиями вектора у.
Пример:
>> [X,Y]=meshgrid(1:4, 13:17)
X =
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
Y =
13 13 13 13
14 14 14 14
15 15 15 15
16 16 16 16
17 17 17 17
Приведем еще один пример применения функции meshgrid:
>> [X,Y]=meshgrid(-2:0.2:2, -2:0.2:2);
Такой вызов функции позволяет задать опорную плоскость для построения трехмерной поверхности при изменении x и y от-2 до 2с шагом 0.2.
Функция ndgridявляется многомерным аналогом функции meshgrid:
· [Х1,Х2,ХЗ,...] = ndgrid(x1,x2,x3....) — преобразует область, заданную векторами x1,.x,x3..., в массивы Х1,Х2,ХЗ..., которые могут быть использованы для вычисления функций нескольких переменных и многомерной интерполяции, i-я размерность выходного массива Xi является копией вектора xi;
[XI,Х2....] = ndgrid(x) - аналогична [XI,Х2....] = ndgrid(x,x,...).
Пример применения функции ndgridпредставлен ниже:
>> [X1,X2]=ndgrid(-2:0.2:2,-2:0.2:2);
>> Z=X1.*exp(-X1.^2-X2.^2);
>> mesh(Z)
Построение графиков поверхностей
Команда plot3(...) является аналогом команды plot(...), но относится к функции двух переменных z(x, у). Она строит аксонометрическое изображение трехмерных поверхностей и представлена следующими формами:
· plot3(x, y, z) — строит массив точек, представленных векторами x, у и z соединяя их отрезками прямых. Эта команда имеет ограниченное применение;
· plot3(X,Y,Z), где X, Y и Z— три матрицы одинакового размера, строит точки с координатами X(i,:),Y(i,:) и Z(i,:) и соединяет их отрезками прямых.
Ниже дан пример построения трехмерной поверхности, описываемой функцией
z(х,у)=х^2+у^2;
>> [X,Y]=meshgrid(-3:0.15:3);
>> Z=X.^2+Y.^2;
>> plot3(X,Y,Z)
График этой поверхности показан на рисунке:
· plot3 (X, Y, Z, S) — обеспечивает построения, аналогичные рассмотренным ранее, но со спецификацией стиля линий и точек, соответствующей спецификации команды plot. Ниже дан пример применения этой команды для построения поверхности кружками:
>> [X,Y]=meshgrid(-3:0.15:3);
>> Z=X.^2+Y.^2;
>> plot3(X,Y,Z,'o')
График поверхности, построенный кружками, показан на рисунке:
· plot3(x1 ,y1,z1, s1,х2,у2,z2, s2,х3,уЗ,z3,s3,...)— строит на одном рисунке графики нескольких функций z1(x1 ,y1),z2(x2,y2) и т. д. со спецификацией линий и маркеров каждой из них.
Пример применения последней команды дан ниже:
>> [X,Y]=meshgrid(-3:0.15:3);
>> Z=X.^2+Y.^2;
>> plot3(X,Y,Z,'-k',Y,X,Z,'k')
В данном случае строятся два графика одной и той же функции с взаимно перпендикулярными образующими линиями. Поэтому график имеет вид сетки без окраски ее ячеек (напоминает проволочный каркас фигуры).
Установка титульной надписи
После того как график уже построен, MATLAB позволяет выполнить его форматирование или оформление в нужном виде. Соответствующие этому средства описаны ниже. Так, для установки над графиком титульной надписи используется следующая команда:
· title( 'string') — установка на двумерных и трехмерных графиках титульной надписи, заданной строковой константой 'string'.
Установка осевых надписей
Для установки надписей возле осей х, уи z используются следующие команды:
xlabel('String')
ylabel ('String')
zlabell ('String')
Соответствующая надпись задается символьной константой или переменной 'String'. Пример установки титульной надписи и надписей по осям графиков приводится ниже: