问题描述
我有一个矩阵,它的三列对应于 x、y 和 f 值。我想用 Octave/MATLAB 根据这些数据在 x,y 平面中绘制 f(x,y)
的等高线图。
假设矩阵 M
是
x1 y1 f1
x2 y2 f2
x3 y3 f3
. . .
. . .
我发现函数 contourf 要求 f
是一个矩阵(而我有一个带有相应点的向量)。
如何生成这个图?
解决方法
您传递给 x
的 y
、z
和 contourf
变量都是相同大小的矩阵。对于每个点,您都需要一个 x
、y
和 z
值。您可以使用 meshgrid
制作具有 x 和 y 值的所有组合的矩阵。
此示例来自 contourf
的文档。我添加了一些评论来解释正在发生的事情
% 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)