主要内容

将数据表示为曲面

绘制数据网格的函数

MATLAB®图形函数定义曲面z中矩形网格上方点的坐标x-y飞机。这幅图是由相邻的点用直线连接而成的。曲面图对于太大而不能用数值形式显示的矩阵的可视化和双变量函数的图形化是有用的。

MATLAB可以创建不同形式的曲面图。网格图为线框表面,只有颜色的线连接定义点。曲面图以颜色显示连接线和曲面的面。这个表格列出了各种形式。

函数

用于创建

冲浪

曲面图

meshcsurfc

表面图下面是等高线图

meshz

表面图与窗帘图(参考平面)

pcolor

平面图(值仅与颜色成比例)

surfl

从指定方向照明的表面图

表面

用于创建表面图形对象的低级函数(高级函数基于此)

函数网格和插值数据

当需要重构和插值数据以便将数据表示为曲面时,这些函数非常有用。

函数

用于创建

meshgrid

二维和三维空间中的矩形网格

griddata

插值分散数据

griddedInterpolant

插值网格数据

scatteredInterpolant

插值分散数据

有关如何插值数据的讨论,请参见插值网格数据而且分散数据插值

网格和曲面图

而且冲浪命令创建矩阵数据的三维曲面图。如果Z一个矩阵中有哪些元素Z (i, j)定义表面在底层之上的高度(i, j)网格,然后

网格(Z)

生成表面的彩色线框视图,并将其显示在3d视图中。同样的,

冲浪(Z)

生成一个彩色的、多面的表面视图,并在3d视图中显示它。通常,切面是四边形,每一个都是不变的颜色,用黑色网格线勾勒,但是阴影命令可以消除网格线(阴影平)或选择跨面插值的底纹(阴影插值函数).

表面对象属性提供了对表面的视觉外观的额外控制。您可以指定边线样式、顶点标记、表面着色、光照特征等等。

两个变量函数的可视化

  1. 要显示两个变量的函数,zfx, y),生成X而且Y在函数的定义域上分别由重复的行和列组成的矩阵。您将使用这些矩阵来计算函数并绘制函数图。

  2. meshgrid函数变换两个向量所指定的域,x而且y,化为矩阵X而且Y.然后使用这些矩阵来计算两个变量的函数X是向量的副本吗x的列Y是向量的副本吗y

例1。示例:说明网格的使用

来说明的用法meshgrid,考虑罪(r) / rsinc函数。求函数在-8到8之间的值x而且y,你只需要传递一个向量参数meshgrid,然后在两个方向上使用。

[X,Y] = meshgrid(-8:.5:8);R =√(X。^2 + y ^2) + eps;

矩阵R包含到矩阵中心的距离,即原点。添加每股收益防止产生的除零(在下一步中)数据中的值。

形成了sinc函数和绘图Z得到三维曲面。

Z = sin(R)./R;图网(X, Y, Z)

隐藏线移除

默认情况下,MATLAB删除网格图中隐藏的线,即使图的面没有填充。控件可以禁用隐藏线删除,并允许网格图的面透明隐藏的命令:

隐藏的

强调表面形状

MATLAB提供了许多技术,可以增强图形的信息含量。例如,这张图sinc函数使用与前一个图形相同的数据,但使用了照明、视图调整和不同的色图来强调图形函数的形状(daspect视图camlight).

figure colormap hsv surf(X,Y,Z,'FaceColor','interp',…‘EdgeColor’,‘没有’,……'FaceLighting','gouraud') daspect([5 5 1])轴紧视(-50,30)camlight left

看到冲浪函数获取有关曲面图的更多信息。

非均匀采样数据的曲面图

你可以使用meshgrid为了创建一个网格的统一采样数据点,以评估和图形化sinc函数。MATLAB然后通过连接相邻的矩阵元素来构造曲面图,以形成四边形网格。

若要从非均匀采样数据生成曲面图,请使用scatteredInterpolant在均匀间隔的点上插值值,然后使用而且冲浪用通常的方式。

使用实例-在曲面上显示非均匀数据

示例计算sinc在特定范围内的随机点上函数,然后生成统一采样的数据,以曲面图的形式显示。该过程包括以下任务:

  • 使用linspace在不均匀采样数据的范围内生成间隔均匀的值。

  • 使用meshgrid生成带有输出的绘图网格linspace

  • 使用scatteredInterpolant将不规则采样数据插值到返回的规则间隔网格中meshgrid

  • 使用绘图函数来显示数据。

  1. 生成范围[- 8,8]内的不均匀采样数据,并用其对函数求值:

    X =兰特(100,1)*16 - 8;Y = rand(100,1)*16 - 8;R =√(x。^2 + y.^2) + eps;Z = sin(r)./r;
  2. linspace函数提供了一种方便的方法来创建具有所需元素数量的均匀间隔数据。下面的语句生成随机数据范围内的向量,其分辨率与-8生成的相同:。5:8的陈述在前面sinc例子:

    Xlin = linspace(min(x),max(x),33);Ylin = linspace(min(y),max(y),33);
  3. 现在使用这些点来生成一个均匀间隔的网格:

    [X,Y] = meshgrid(xlin,ylin);
  4. 这个过程的关键是使用scatteredInterpolant根据函数在原始数据点(在本例中是随机的)上的值,在均匀间隔的点上插值函数的值。这个语句使用默认的线性插值来生成新的数据:

    f = scatteredinterpolation (x,y,z);Z = f(X,Y);
  5. 将插值数据和非均匀数据绘制成:

    图网(X, Y, Z)%以内插值替换的;持有plot3 (x, y, z,“。”“MarkerSize”15)%不均匀

改变数据

假设你有一个包含以下(X, Y, Z)三组数据的集合:

X Y Z
1 1 152
2 1 89
3. 1 One hundred.
4 1 One hundred.
5 1 One hundred.
1 2 103
2 2 0
3. 2 One hundred.
4 2 One hundred.
5 2 One hundred.
1 3. 89
2 3. 13
3. 3. One hundred.
4 3. One hundred.
5 3. One hundred.
1 4 115
2 4 One hundred.
3. 4 187
4 4 200
5 4 111
1 5 One hundred.
2 5 85
3. 5 111
4 5 97
5 5 48

您可以使用各种MATLAB图形类型来表示矢量形式的数据,例如冲浪轮廓,stem3,首先重构数据。使用(X, Y)值来定义X - Y平面中存在Z值的坐标。的重塑而且转置函数可以重构你的数据,使(X, Y, Z)三元组形成一个矩形网格:

x =重塑(x,5,5)';y =重塑(y,5,5)';z =重塑(z,5,5)';

重塑的结果是三个5乘5数组:

x = 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 y = 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 z = 152 89 100 100 100 103 0 100 100 100 89 100 100 100 115 100 187 200 111 100 85 111 97 48

你现在可以表示Z相对于X和y的值。例如,创建一个3-D茎图:

stem3 (x, y, z,“MarkerFaceColor”‘g’

参数的表面

绘制曲面的函数可以采用两个额外的向量或矩阵参数来描述特定的曲面x而且y数据。如果Z是一个——- - - - - -n矩阵,x是一个n向量,y是一个向量,然后

网格(x, y, Z, C)

描述顶点具有颜色的网格表面C (i, j)并定位于这些点

(x(j) y(i) Z(i,j))

在哪里x对应于的列Z而且y到它的行。

更一般地说,如果XYZ,C那么矩阵的维数相同吗

网格(X, Y, Z, C)

描述顶点具有颜色的网格表面C (i, j)并定位于这些点

X(i,j), Y(i,j), Z(i,j))

示例使用球坐标绘制球体,并将其着色为a中的加号和减号图案阿达玛矩阵,一种用于信号处理编码理论的正交矩阵。向量θ而且φ都在这个范围内-π≤θ≤π和-π/ 2φ≤π/ 2.因为θ行向量和φ是列向量吗?矩阵的乘法XY,Z是向量外积。s manbetx 845

图k = 5;N = 2^k-1;Theta = pi*(-n:2:n)/n;= (pi/2)*(-n:2:n)'/n;X = cos *cos;Y = cos *sin;Z = sin()*ones(size(theta));colormap([0 0 0;1 1 1]) C = hadamard(2^k);冲浪(X,Y,Z,C)轴方