绘制曲线图
clear;clc
t = linspace(0,2.*pi,100);
x = 8.*cos(t);
y = 4.*sin(t).*sqrt(2);
z = -4.*sin(t).*sqrt(2);
plot3(x,y,z)
grid on;
运行结果如图所示
绘制网格图
clear;clc
x = -2:0.1:2;
y = -4:0.1:4;
%网格数据生成
[X,Y] = meshgrid(x,y)
Z = X.*exp(-X.^2-Y.^2);
%网格图生成
figure(1)
mesh(X,Y,Z)
colormap(jet)%改变图形配色
在绘制3维曲面图时,要提前生成对应的网格数据,在这里我们使用meshgrid(x,y)函数快速生成网格数据。在三维图上每一个X,Y都有一个对应的Z数据。
在这里观察工作区就会发现,Z的数据是81X41个网格数据,而且X的数据是重复的:
而Z的数据就是对应每个XY的,见下图:
程序执行结果见下图:
绘制曲线面
在上段网格数据XY的基础上,我们绘制曲面图:
figure(2)
surf(X,Y,Z)
运行结果如下:
对图形进行插值美化:
shading interp%插值丰富3维图
三维绘图分区
使用subplot()即可
close all;
subplot(2,2,1)
mesh(X,Y,Z)
subplot(2,2,2)
surf(X,Y,Z)
subplot(2,1,2)
plot3(X,Y,Z)
grid on;
绘制等直线图与光照图
close all;
subplot(2,3,1)
contour(X,Y,Z)%2d等直线图
title('2d等直线图')
subplot(2,3,2)
contour3(X,Y,Z)%3d等直线图
title('3d等直线图')
subplot(2,3,3)
meshc(X,Y,Z)
title('meshc(X,Y,Z)')
subplot(2,2,3)
surfc(X,Y,Z)
title('surfc(X,Y,Z)')
subplot(2,2,4)
surfl(X,Y,Z)%光照图
title('surfl(X,Y,Z)')
绘制球与柱体
绘制球的网格数据函数:sphere(30),参数切片圆的点数,越多越像圆
axis equal:使XYZ轴间距相等
绘制柱形图函数:cylinder(2+cos(t),30),第一个参数为向量,第二个参数切片圆的点数,越多越像圆
close all;
[X,Y,Z] = sphere(30)%参数切片圆的点数,越多越像圆
subplot(1,3,1)
surf((X-2),10.*Y,Z)
title('椭球')
subplot(1,3,2)
surf(X,Y,Z)
title('球')
subplot(1,3,3)
t = linspace(0,2.*pi,100);
cylinder(2+cos(t),30)%第一个参数为向量,第二个参数切片圆的点数,越多越像圆
title('柱形图')
将3个图绘制在一张图中:
[X,Y,Z] = sphere(30);
surf((X-2),4.*Y,2.*Z)
hold on
surf(X,Y,Z)
cylinder(2+cos(t),30)
axis equal
xlabel('X')
ylabel('Y')
zlabel('Z')