Создание массивов данных для трехмерной графики
Трехмерные поверхности описываются функцией двух переменных z = f(x, y). Построение трехмерных графиков требует определение для х и у двухмерных массивов – матриц. Для создания таких массивов служит функция meshgrid, которая записывается следующим образом:
[X, Y] = meshgrid(x, y) ; |
В основном она используется совместно с функциями построения графиков трехмерных поверхностей. Функция преобразует область заданную векторами х и у, в массивы X и Y, которые могут быть использованы для вычисления функции двух переменных и построения трехмерных графиков. Строки выходного массива Х являются копиями вектора х, а столбцы Y – копиями вектора у.
Пример:
>> [X Y] | = | mesh grid (4 : 7 , 9 : 13) |
Х | = | |
4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 | ||
Y | = | |
9 9 9 9 10 10 10 10 11 11 11 11 12 12 12 12 13 13 13 13 |
Приведем еще пример применения функции meshgrid:
>> [X Y] = meshgrid (- 1 : 0.1 : 1, -1 : 0.1 : 1);
Такой вызов функции создает опорную плоскость для построения трехмерной поверхности при изменении х и у от – 1 до 1 с шагом 0.1.
1.6.4. Построение графиков поверхностей
Для построения графиков функции z = f(x, y) используется команды plot3 ( … ), которая является аналогом команды plot ( … ). Она строит аксонометрическое изображение трехмерной поверхности и имеет следующие формы:
рlot3 (х, у, z) – строит массив точек, представленных векторами х, у, z и соединяет их отрезками прямых.
рlot3 (X, Y, Z), где X, Y, Z – три матрицы одинакового размера, строит точки с координатами X(i, : ), Y(i, : ) и Z(i, : ) и соединяет их отрезками прямых. Пример построения графика трехмерной поверхности Z = x2 + y2:
>> [X Y]=meshgrid([-3:0.15:3]);
>> Z=X.^2 + Y.^2 ;
>> plot3(X,Y,Z)
>> grid on
рlot3 (X, Y, Z, S) – обеспечивает построение графика поверхности, но со спецификацией стиля линий и точек, соответствующей спецификации команды plot.
Построение графиков поверхностей
· plot3(X,Y,Z), где X, Y и Z — три матрицы одинакового размера, строит точки с координатами X(i.:), Y(i,:) и Z(i,:) и соединяет их отрезками прямых.
>> x=-3:0.15;3;
>> y=-3:0.15:3;
>> z=x.^2+y.^2;
>> plot3(x,y,z);
>> [x,y]=meshgrid(x,y);
>> plot3(x,y,z);
MESHGRID
>> [x,y]=meshgrid(-5:0.1:5);
>> z=x.*sin(x+y);
>> meshc(x,y,z);
Here are some examples of surface plots in MATLAB.
Contents
Mesh Plot of Peaks
Surface Plot of Peaks
Surface Plot (with Shading) of Peaks
Contour Plot of Peaks
Quiver
Slice
Mesh Plot of Peaks
z=peaks(25);
mesh(z);
colormap(hsv)
Surface Plot of Peaks
z=peaks(25);
surf(z);
colormap(jet);
Surface Plot (with Shading) of Peaks
z=peaks(25);
surfl(z);
shading interp;
colormap(pink);
Contour Plot of Peaks
z=peaks(25);
contour(z,16);
colormap(hsv)
Quiver
x = -2:.2:2;
y = -1:.2:1;
[xx,yy] = meshgrid(x,y);
zz = xx.*exp(-xx.^2-yy.^2);
[px,py] = gradient(zz,.2,.2);
quiver(x,y,px,py,2);
Slice
[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);
v = x.*exp(-x.^2-y.^2-z.^2);
xslice = [-1.2,.8,2]; yslice = 2; zslice = [-2,0];
slice(x,y,z,v,xslice,yslice,zslice)
colormap hsv
D Surface Plots
>>graf3d