【问题标题】:How to make a 2D contour plot with given data point in Octave/MATLAB?如何在 Octave/MATLAB 中使用给定数据点制作二维等高线图?
【发布时间】:2021-01-01 14:29:38
【问题描述】:

我有一个矩阵,它的三列对应于 x、y 和 f 值。我想用 Octave/MATLAB 根据这些数据在 x,y 平面上绘制f(x,y) 的等高线图。

假设矩阵M

x1 y1 f1
x2 y2 f2
x3 y3 f3
.  .  .
.  .  .

我发现函数 contourf 要求 f 是一个矩阵(而我有一个带有对应点的向量)。

如何生成此图?

【问题讨论】:

  • 一般在这种情况下,最好的办法是在标准 ndgrid 上插入实际值,然后然后将其传递给相关的表面绘图函数。

标签: matlab plot octave


【解决方案1】:

您传递给contourfxyz 变量都是大小相同的矩阵。对于每个点,您都需要一个 xyz 值。您可以使用meshgrid 制作具有所有 x 和 y 值组合的矩阵。

此示例来自contourf 的文档。我添加了一些 cmets 来解释发生了什么

% Create a vector of x values
x = linspace(-2*pi,2*pi);
% Create a vector of y values 
y = linspace(0,4*pi);
% Make matrices with all combinations of x and y values for plotting
[X,Y] = meshgrid(x,y);
Z = sin(X)+cos(Y);
contourf(X,Y,Z)

这是上面代码的结果

【讨论】:

  • 我知道如何为 x,y 创建网格,但我只有 z(或 f)的值对应于数据中的特定 (x,y)。我不能写像Z = sin(X)+cos(Y); 这样的东西,我的z 不是矩阵。我只有 (x,y,z) 的列表
  • 假设您拥有 x 和 y 的所有组合,也许您可​​以使用 reshape 函数将 x、y 和 z 值转换为矩阵。
猜你喜欢
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 2017-11-23
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
相关资源
最近更新 更多