matlab 轮廓阈值f

1yjd4xko  于 2023-02-16  发布在  Matlab
关注(0)|答案(1)|浏览(186)

我需要两个等值线图来显示阈值,我使用

contourf(X,Y,Z,[-1,-1],'k');
contourf(X,Y,Z,[2,2],'w');

而X和Y是简单的网格。
我看到矩阵Z的值大于-1和大于1,所以我期望在-1和1处有两条线,但我只看到了第一条等高线,我做错了什么?
编辑:这里是一个例子

x = 0:5:180;
y = 0:5:355;
[X,Y] = meshgrid(x,y);
Z = 5*cos(X);

figure(1);## Heading ##
surf(X',Y',Z','EdgeColor','none');
view(2); colorbar;colormap(jet); hold on
contour(X',Y',Z',[-1,-1],'k','LineWidth',1);
contour(X',Y',Z',[2,2],'k','LineWidth',2);
legend('','1','2','Location','northeastoutside');

我看到如果我把两个contour放在一个新的图中,这两个都被绘制出来了。但是当我使用surf时,我只看到了[-1,-1]选项。非常感谢
edit 2:使用pcolor代替surf(删除,'EdgeColor','none')给了我正确的绘图...为什么?有什么变化?

baubqpgj

baubqpgj1#

contourf不是一个3D绘图函数,它是一个2D绘图函数,所以当你要求绘制等值线时,它总是在z=0处绘制,所以当你设置view(2)时,你的surf绘图是在z〉0的contourf的“顶部”。
从另一个Angular 来看你给出的例子:

你可以在这里看到两条线。
pcolor打印2D图像,而不是3D曲面,因此它适用于pcolorimagesc

相关问题