我正在尝试使用以下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)
这实际上给了我错误的图片:
我真的不明白这里出了什么问题,因为当我做[c,h] =轮廓(X,Y,Z,[3 0])时,它确实给了我正确的轮廓图。等级3和0,我需要帮助。
答案 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)
答案 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)