【问题标题】:Contours in Matlab/OctaveMatlab/Octave 中的等高线
【发布时间】:2017-03-03 19:40:43
【问题描述】:

我无法理解轮廓。

到目前为止我所理解的是contours 是一种在 2d 平面中表示 3d 图形的方法。它通过将一个包含 2 个变量的函数绘制为具有相同值的曲线来实现。

现在如果我这样做:

z=[1 4; 10 7];
contour(z);

我明白了:

我阅读了文档,上面写着:

contour(Z) 绘制矩阵 Z 的等高线图,其中 Z 被解释为 相对于 x-y 平面的高度。 Z 必须至少为 2×2 包含至少两个不同值的矩阵。 x 值 对应于 Z 的列索引,y 值对应于 Z 的行索引。轮廓级别是自动选择的。

因此对于x=1,y=1: z=1x=2,y=1: z=4 等等。但是我不明白如何将其解释为上面显示的contour 图。

如果我写:

contour(X1, X2, vals, [0.5 0.5], 'b'); 其中X1X2vals 是大小相等的矩阵,vals 是只有0s 和1s 的矩阵。我不明白[0.5 0.5] 的论点是做什么的。我阅读了文档,其中指出:

contour(Z,v) 绘制矩阵 Z 的等高线图,等高线位于 在单调递增向量 v 中指定的数据值。 在特定值处显示单个轮廓线,将 v 定义为 两个元素都等于所需轮廓的二元素向量 级别。

我无法理解这句话。

【问题讨论】:

  • 尝试hold on;z=[1 4; 10 7]; contour3(z);surf(z,'facealpha',0.5) 以了解这些线条在视觉上的含义。 contour3 在 3D 中绘制线条而不是挤压它们

标签: matlab octave contour


【解决方案1】:

第一个轮廓的问题是只有 4 个值。尝试类似

x = 0:0.1:10;
y = 0:0.1:10;
z = sin(x') * cos(y);
contour(z)

对于第二件事,这意味着如果您只想查看特定的轮廓,请将它们作为向量 v 输入。在上面的示例中:

contour(z, [0.1, 0.2, 0.3]) 

将显示 0.1、0.2 和 0.3 的等高线。 要拥有一条轮廓线,您不能只有 (z, 0) 而是需要 (z, [0,0])

【讨论】:

  • 以上代码报错。所以我改为尝试z = sin(x) .* cos(y);,但它仍然给出错误。 contour(z, [0, 1, 2, 3]) will show contour lines of 0, 1, 2 and 3. 是什么意思?这是否意味着它将在z=0z=1z=2z=3 处显示轮廓线?
  • @shiva 抱歉,忘记转置了。
  • @shiva 是的,它会在 z=0、1、2 或 3 的位置显示等高线。例如,在 z=0.5 的位置不会显示等高线。这些数字是愚蠢地选择的,不会显示任何价值,您应该尝试 0.1、0.2 和 0.3。
  • 这意味着contour(X1, X2, vals, [0.5 0.5], 'b');这不应该显示任何行,因为vals只有0s和1s,但它确实显示了一行。
  • @shiva 在 sin/cos 示例中也没有精确的 0.1 值,但 Matlab 仍会绘制轮廓。如果一个值高于指定值而另一个低于指定值,则等高线位于这两个值之间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多