Работа с графиками в MatLab

Построение двухмерного графика осуществляется средствами функции 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)

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: