【MATLAB】三维图形绘制 ( 三维平面图 | 二维网格 | meshgrid 函数 | 绘制网格 | mesh 函授 | 绘制平面 | surf 函数 | 绘制等高线 | contour 函数 )





一、二维网格





1、线图 与 平面图


之前使用 plot 和 plot3 绘制的都是线图 , 给定若干个点的向量 , 绘制这些点 , 然后将这些点使用直线连接起来 , 组成了线图 ;

绘制 3 3 3 维线图时 , 只需要给定 X , Y , Z X,Y, Z X,Y,Z 三个向量 ( 每个向量都含有 n n n 个元素 ) , 分别是 n n n 个点的 x , y , z x, y , z x,y,z 坐标值 ;

两点之间 , 使用线连接起来即可 ;


平面图形 Surface , 绘制的是一个平面 , 需要给定 X , Y , Z X, Y, Z X,Y,Z 三个值 , 其中 X , Y , Z X, Y, Z X,Y,Z 是矩阵 ;

X , Y , Z X, Y, Z X,Y,Z 都是 m × n m \times n m×n 的矩阵 , 那么 X , Y X, Y X,Y 就可以决定一个 m × n m \times n m×n 个点组成的平面 , 此时 m × n m \times n m×n 个点的 z z z 轴的值是 Z Z Z 矩阵中对应的 m × n m \times n m×n 个值中的一个 ;

平面是按照矩阵网格状进行分布 ;



2、meshgrid 函数生成二维网格


meshgrid 参考文档 : https://ww2.mathworks.cn/help/matlab/ref/meshgrid.html


使用 meshgrid 函数 , 可以产生 X , Y X, Y X,Y 矩阵的值 , 即产生的是 x − y x -y xy 坐标轴的网格平面 ;


生成二维网格示例 :

% 生成 x 向量
x = -2 : 1 : 2

% 生成 y 向量
y = -2 : 1 : 2

% 生成 X Y 两个矩阵 
% 生成了 x-y 坐标轴上的网格
[X, Y] = meshgrid(x, y)

打印结果 :

>> Untitled

x =

    -2    -1     0     1     2


y =

    -2    -1     0     1     2


X =

    -2    -1     0     1     2
    -2    -1     0     1     2
    -2    -1     0     1     2
    -2    -1     0     1     2
    -2    -1     0     1     2


Y =

    -2    -2    -2    -2    -2
    -1    -1    -1    -1    -1
     0     0     0     0     0
     1     1     1     1     1
     2     2     2     2     2

>> 

X X X 向量

-2    -1     0     1     2

Y Y Y 向量

-2    -1     0     1     2

生成的二维网格 ,

X X X 矩阵 :

X =

    -2    -1     0     1     2
    -2    -1     0     1     2
    -2    -1     0     1     2
    -2    -1     0     1     2
    -2    -1     0     1     2

Y Y Y 矩阵 :

Y =

    -2    -2    -2    -2    -2
    -1    -1    -1    -1    -1
     0     0     0     0     0
     1     1     1     1     1
     2     2     2     2     2




二、绘制网格





1、mesh 函数绘制网格


mesh 函数参考文档 : https://ww2.mathworks.cn/help/matlab/ref/mesh.html

mesh 函数作用是绘制网格 ;



2、代码示例


使用 -2 : 0.1 : 2 向量生成 x , y x,y x,y 网格矩阵 X , Y X , Y X,Y ;

每个 z z z 值的计算方式是 z = e − x 2 − y 2 x z = e^{-x^2 - y^2}x z=ex2y2x ;


代码示例 :

% 生成 x 向量
x = -2 : 0.1 : 2;

% 生成 y 向量
y = -2 : 0.1 : 2;

% 生成 X Y 两个矩阵 
% 生成了 x-y 坐标轴上的网格
[X, Y] = meshgrid(x, y);

% 生成 Z 矩阵
Z = X .* exp (-X .^ 2 - Y .^ 2);

% 绘制网格
mesh(X, Y, Z);

绘制结果 :

在这里插入图片描述





三、绘制平面





1、surf 函数绘制平面


surf 函数参考文档 : https://ww2.mathworks.cn/help/matlab/ref/surf.html

surf 函数作用是绘制平面 , 给网格填充颜色 ;



2、代码示例


使用 -2 : 0.1 : 2 向量生成 x , y x,y x,y 网格矩阵 X , Y X , Y X,Y ;

每个 z z z 值的计算方式是 z = e − x 2 − y 2 x z = e^{-x^2 - y^2}x z=ex2y2x ;


代码示例 :

% 生成 x 向量
x = -2 : 0.1 : 2;

% 生成 y 向量
y = -2 : 0.1 : 2;

% 生成 X Y 两个矩阵 
% 生成了 x-y 坐标轴上的网格
[X, Y] = meshgrid(x, y);

% 生成 Z 矩阵
Z = X .* exp (-X .^ 2 - Y .^ 2);

% 绘制平面
surf(X, Y, Z);

绘制结果 :

在这里插入图片描述





四、绘制等高线





1、contour 函数绘制等高线


contour 函数参考文档 : https://ww2.mathworks.cn/help/matlab/ref/contour.html

contour 函数作用是绘制平面的等高线 , 如果 z z z 轴的值相等 , 那么在 x , y x, y x,y 坐标系中绘制等高线 ;



2、代码示例


使用 -2 : 0.1 : 2 向量生成 x , y x,y x,y 网格矩阵 X , Y X , Y X,Y ;

每个 z z z 值的计算方式是 z = e − x 2 − y 2 x z = e^{-x^2 - y^2}x z=ex2y2x ;


代码示例 :

% 生成 x 向量
x = -2 : 0.1 : 2;

% 生成 y 向量
y = -2 : 0.1 : 2;

% 生成 X Y 两个矩阵 
% 生成了 x-y 坐标轴上的网格
[X, Y] = meshgrid(x, y);

% 生成 Z 矩阵
Z = X .* exp (-X .^ 2 - Y .^ 2);

% 绘制等高线
contour(X, Y, Z);

绘制结果 :

在这里插入图片描述



3、绘制彩色等高线并标注高度值


代码示例 :

% 生成 x 向量
x = -2 : 0.1 : 2;

% 生成 y 向量
y = -2 : 0.1 : 2;

% 生成 X Y 两个矩阵 
% 生成了 x-y 坐标轴上的网格
[X, Y] = meshgrid(x, y);

% 生成 Z 矩阵
Z = X .* exp (-X .^ 2 - Y .^ 2);

% 绘制等高线
[C, h] = contourf(X, Y, Z);

% 标注高度值
clabel(C, h);

执行结果:

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值