使用matlab的轮廓图失败

时间:2014-12-09 10:35:43

标签: matlab matlab-figure contour

我正在尝试使用以下matlab代码创建等高线图:

x=linspace(-10,10);
y=linspace(-10,10);
[X,Y]=meshgrid(x,y);
Z=X.^3-Y.^3;
figure
[c,h]=contour(X,Y,Z,[3]);
clabel(c,h)

这实际上给了我错误的图片: enter image description here

我真的不明白这里出了什么问题,因为当我做[c,h] =轮廓(X,Y,Z,[3 0])时,它确实给了我正确的轮廓图。等级3和0,我需要帮助。

2 个答案:

答案 0 :(得分:1)

contour的第四个论点可能是两件事。

如果它是一个数字数组(大于1),那么它是你想要显示的轮廓值。否则,如果是单个值,则表示要显示的等高线的数量

示例:

x=linspace(-10,10);
y=linspace(-10,10);
[X,Y]=meshgrid(x,y);
Z=X.^3-Y.^3;
figure
subplot(121)
[c,h]=contour(X,Y,Z,[10]);
clabel(c,h)
subplot(122)
[c,h]=contour(X,Y,Z,[1000 -1000 50 -70 3 0]);
clabel(c,h)

enter image description here

答案 1 :(得分:1)

如果您只向contour提供一个数字,它会将其解释为您想要的等高线数并自动选择等级。 From the docs

  

轮廓(Z,v)绘制矩阵Z的等高线图,其轮廓线位于单调增加的矢量v中指定的数据值。要在特定值处显示单个轮廓线,请将v定义为双元素矢量两个元素都等于所需的轮廓水平。例如,要在级别k绘制轮廓线,请使用轮廓(Z,[k k])。指定向量v会将LevelListMode属性设置为手动。

e.g。要在" 3"处获得单个轮廓,您需要这样做:

figure
[c,h]=contour(X,Y,Z,[3,3]);
clabel(c,h)