meshgrid
meshgrid 和 mesh 方法的差别在于是否会画出栅格线
绘制曲面图
-
生成绘制3D图形所需的网格数据。因为在计算机中进行绘图操作时,往往需要一些采样点,然后根据这些采样点来绘制出整个图形。
-
涉及到x、y这两组数据可以看做是在 Oxy 平面内对坐标进行采样得到的坐标对(x, y)。
-
[X,Y] = meshgrid(x,y)
- 解释:输出 X 的每一行的数值都是复制的x的值;输出 Y 的每一列的数值都是复制的y的值。
- 所以,若x-1xm维, y-1xn维,则[X,Y]为 mxn 维
- 也就是说,在 XOY 平面上,用m个x和n个y,通过不断做垂线,产生交点从而生成小的矩形网格的方法,生成网格图。
-
[X,Y]=meshgrid(x)
与[X,Y]=meshgrid(x,x)
是等同的% meshgrid--draw 2D figure. >> a=[1 2 3]; b= [2 3]; >> [x y]=meshgrid(a,b) x = 1 2 3 1 2 3 y = 2 2 2 3 3 3 % shape(x)=shape(y)=2x3 % Draw 3D figure [X,Y] = meshgrid(-2:.2:2, -2:.2:2); Z = Y .* exp(-X.^2 - Y.^2); mesh(X,Y,Z)
- 结果图片:Meshgrid-1.jpg
-
从 R2016b 开始,操作网格之前并不总是需要先创建网格,可以直接使用 surf 语句
surf(x, y, z)
三维网络
-
[X,Y,Z]=meshgrid(x,y,z)
生成三维数组 -
在区间 [0,6] 内使用定义的 x、y 和 z 坐标创建三维网格坐标,并计算表达式 (x^2+y^2+z^2)
x = 0:2:6; y = 0:1:6; z = 0:3:6; [X,Y,Z] = meshgrid(x,y,z); F = X.^2 + Y.^2 + Z.^2;
-
确定网格的大小。三个坐标向量具有不同的长度,构成一个网格点矩形框。
gridsize = size(F) % 结果 gridsize = 1×3 7 4 3
- 输出的 gridsize 是 x-y-z 的三个维度。
- 也就是说,X,Y,Z都是 7x4。每个都是3层,即X[:,:,1-3]
- X 的每行都是0,2,4,6;
- Y 的每列都是0-6;
- Z 的所有元素都是0,3,6;
- 可以理解成 z 层 x-y 平面。比如本题 3层7x4 平面。
-
使用单输入语法,基于 x 中定义的坐标生成均匀分布的三维网格。新网格构成一个网格点正方体。
[X,Y,Z] = meshgrid(x); G = X.^2 + Y.^2 + Z.^2; gridsize = size(G) % 结果 gridsize = 1×3 4 4 4
- 此时只输入 x,因为 x 只有4个元素,则 X-Y-Z 皆是 4x4维矩阵,共有4层。X的每行都是0,2,4,6; Y的每列都是0,2,4,6; Z的所有元素都是0,2,4,6。