Построение двухмерного графика осуществляется средствами функции plot(x,y,s), где x – аргумент, заданный в виде вектора; y – функция в аналитическом виде от аргумента x (рис. 1.3); s – стили, задаются в виде набора трёх символьных маркеров, заключенных в одиночные кавычки (таб. 1.1). Стили не являются обязательным элементом. В том случае, когда необходимо в одном окне построить несколько графиков, используется следующая запись функции plot (рис. 1.4): plot(x1, y1, s1, x2, y2, s2, …, xn, yn, sn).
Табл. 1.1 - Стили графиков
Тип точки | Цвет линии | Тип линии | |||
. | Точка | Y | Желтый | - | Сплошная |
О | Окружность | M | Фиолетовый | : | Двойной пунктир |
X | Крест | C | Голубой | -. | Штрих-пунктир |
+ | Плюс | R | Красный | -- | Штриховая |
* | звездочка | G | Зеленый | ||
S | Квадрат | B | Синий | ||
D | W | Белый | |||
V, ^, <, > | Треугольник вверх, вниз, влево, вправо | K | Черный | ||
P | Пятиконечная звезда | ||||
H | Шестиконечная звезда |
По умолчанию каждая следующая команда plot затирает вывод предыдущей. При помощи команды hold on затирание отключается, команда hold off вновь включает режим затирания.
|
|
x=0:0.2:15;
y=sin(x);
plot(x,y,'P R');
Рис. 1.3. График функции y=sin(x) при x=0:0.2:15
x1=0:0.2:15;
x2=0:0.1:15
y1=sin(x1);
y2=cos(x2);
plot(x1,y1,'--',x2,y2,'*');
Рис. 1.4. График двух функций y1=sin(x1) и y2=cos(x2)
Помимо стандартного двухмерного представления графиков в форме линии, в MatLab имеются и другие функция представления графической информации:
1. В том случае, когда требуется отобразить содержимое вектора в форме столбцовой диаграммы используется функция bar(x) (рис. 1.5).
x=[5,7,2,9,6,1,4,3];
bar(x);
Рис. 1.5. Результат выполнения функции bar(x)
2. График в виде ступенчатой линии: stairs(x,y) (рис. 1.6).
x=-1:0.1:1;
y=x.^3;
stairs(x,y);
Рис. 1.6. Результат выполнения функции stairs(x,y)
3. График в виде «стебельков»: stem(x,y) (рис. 1.7).
x=-1:0.05:1;
y=x.^2;
stem(x,y);
Рис. 1.7. Результат выполнения функции stem(x,y)
В MatLab имеются функции построения графиков в трехмерном пространстве:
1. plot3(x,y,z) – строит линию в трехмерном пространстве.
2. surf(x,y,z) – построение сетчатой поверхности (рис. 1.8). Координаты углов каждой ячейки задаются значениями четырех соседних элементов массивов x,y,z с индексами (i,j), (i, j+1), (i+1, j), (i+1, j+1). Значение массива z рассчитываются по формуле функциональной зависимости с использованием поэлементных операций над массивами x,y, при этом число элементов массивов х и у должно совпадать:
%Построение графика функции z=x^2*sin(y-1)
%в области xє[-7,3] и yє[-4.4,1.7].
n=15;
x=-7:10/(n-1):3;
y=-4.4:6.1/(n-1):1.7;
z=zeros(n,n);
for j=1:n
z(j,:)=x.^2*sin(y(j)-1);
end
surf(x,y,z)
xlabel('x')
ylabel('y')
zlabel('z')
title(' z=x^2*sin(y-1)');
Рис. 1.8 - Результат выполнения функции surf(x,y,z)
Другим способом формирования массивов x,y является применение специальной функции [x,y]=meshgrid(x,y) (рис. 1.9). Формируемые массивы имеют length(y) строк и length(x) столбцов.
|
|
x=-3:0.1:3;
[x,y]=meshgrid(x);
z=sinc(sqrt(x.^2+y.^2));
surf(x,y,z)
Рис. 1.9. Результат выполнения функции surf(x,y,z)
3. mesh(x,y,z) – построение поверхности в виде сетки с закрашенными ребрами и не закрашенными четырехугольными ячейками (рис. 1.10).
[x,y]=meshgrid(-5:0.4:5);
z=x.*sin(x+y);
mesh(x,y,z)
Рис. 1.10. Результат выполнения функции mesh(x,y,z)
4. другие функции (meshc(x,y,z), meshz(x,y,z), surfc(x,y,z), waterfall(x,y,z), stem3(x,y,z), contourf(x,y,z), contour3(x,y,z), pcolor(x,y,z)) реализующие построение поверхности с присущей им спецификой.
В том случае, когда необходимо вывести несколько графиков различной природы без наложения их друг на друга в разных подокнах используется функция subplot(m,n,p), разбивающая графическое окно на m*n подокон, где m – число подокон по горизонтали, n – по вертикали, а p – номер подокна, в которое будет выводиться текущий график (рис. 1.11):
x=-3:0.1:3;
y1=sin(x);
subplot(2,2,1),plot(x,y1);
x2=sin(7*x);
y2=cos(4*x+1);
subplot(2,2,2),plot(x2,y2);
[x3,y3]=meshgrid(x);
z3=sinc(sqrt(x3.^2+y3.^2));
subplot(2,2,3), plot3(x3,y3,z3);
[x4,y4]=meshgrid(-5:0.4:5);
z4=x4.*sin(x4+y4);
mesh(x4,y4,z4);
subplot(2,2,4),surf(x4,y4,z4);
Рис. 1.11 – Результат выполнения функции subplot(2,2,p)