主要内容

将数据表示为曲面

用于绘制数据网格的函数

MATLAB®图形通过z中矩形网格上方点的坐标x-y飞机。这张图是用直线把相邻的点连接起来的。曲面图对于可视化大到无法用数字形式显示的矩阵和绘制两个变量的函数非常有用。

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

函数

用于创建

冲浪

曲面图

meshcsurfc

表面图,下面是等高线图

meshz

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

pcolor

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

surfl

从指定方向照明的表面图

表面

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

用于网格化和插值数据的函数

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

函数

用于创建

meshgrid

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

griddata

插入数据分散

griddedInterpolant

插值网格数据

scatteredInterpolant

插入数据分散

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

网格和曲面图

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

网格(Z)

生成表面的彩色线框视图,并以3d视图显示它。同样的,

冲浪(Z)

生成表面的彩色多面视图,并以3d视图显示。通常情况下,平面是四边形的,每个都是固定的颜色,用黑色网格线勾勒出来,但是阴影命令可以消除网格线(阴影平)或选择在facet上插值阴影(阴影插值函数).

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

二变量函数的可视化

  1. 要显示一个二元函数,zfx, y),生成XY在函数的定义域上,分别由重复的行和列组成的矩阵。您将使用这些矩阵来计算和绘制函数。

  2. meshgrid函数变换两个向量指定的定义域,xy到矩阵XY.然后用这些矩阵求两个变量的函数值X是向量的副本吗x和列Y是向量的副本吗y

例1。示例:演示meshgrid的用法

说明…的用法meshgrid,考虑罪(r) / rsinc函数。在-8和8之间求函数值xy,则只需要传递一个vector参数meshgrid,然后在两个方向上使用。

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

矩阵R包含到矩阵中心的距离,也就是原点。添加每股收益防止(在下一步中)被零除值。

形成了sinc功能和绘图Z结果在三维表面上。

Z =罪(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]) axis tight view(-50,30) camlight left

看到冲浪函数以获得更多关于曲面图的信息。

非均匀采样数据的表面图

您可以使用meshgrid建立一个均匀抽样的数据点的网格,在那里评估和绘制sinc函数。然后MATLAB通过连接相邻的矩阵元素来构造曲面图,形成四边形网格。

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

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

例评估sinc函数在特定范围内的随机点,然后生成均匀采样的数据,以显示为曲面图。这个过程包括以下任务:

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

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

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

  • 使用绘图功能来显示数据。

  1. 在[- 8,8]范围内生成不均匀采样的数据,并用它来计算函数:

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

    xlin = linspace (min (x)马克斯(x), 33);ylin = linspace (min (y), max (y), 33);
  3. 现在使用这些点来生成均匀间隔的网格:

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

    f = scatteredInterpolant (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

现在可以用X和y表示Z的值。例如,创建一个3-D的干图:

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

参数的表面

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

网格(x, y, Z, C)

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

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

在哪里x对应的列Zy它的行。

更一般的,如果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;θ=π* (- n: 2: n) / n;φ=(π/ 2)* (- n: 2: n) / n;X = cos(φ)* cos(θ);Y = cos(φ)* sin(θ);Z =罪(φ)*的(大小(θ));C = hadamard(2^k);冲浪(X, Y, Z, C)轴广场