我想在同一个图中绘制2个函数,以便可视化函数及其约束函数,这样我就可以更好地了解约束函数范围内函数的最大值。
目前,我正在使用ezsurf
一次绘制一个函数。
syms x y
ezsurf(5 - x^2 - 1/2*y^2);
我的约束函数是
ezsurf(x + y - 2);
但这仅显示约束函数的图形(第二个)。
是否可以在同一图表中显示两者,最好是用不同的颜色?
答案 0 :(得分:2)
在第一张图后添加hold on
。
保持当前轴上的保留图,以便添加到轴的新图不会删除现有图。新图使用基于轴的ColorOrder和LineStyleOrder属性的下一种颜色和线条样式。 MATLAB调整轴限制,刻度线和刻度标签以显示全部数据。
hold off将保持状态设置为off,以便添加到轴的新图清除现有图并重置所有轴属性。添加到轴的下一个绘图使用基于轴的ColorOrder和LineStyleOrder属性的第一种颜色和线条样式。这是默认行为。
持有所有与持有相同。 .....更多here
以下是如何控制每个表面的不同颜色:
colormap([parula(64);gray(64)])
syms x y
h(1)=ezsurf(5 - x^2 - 1/2*y^2);
Z=(get(h(1),'zdata'));
hold on
h(2)=ezsurf(x + y - 2);
m = 64; % 64-elements is each colormap
cmin = min(Z(:));
cmax = max(Z(:));
% CData for surface1
C1 = min(m,round((m-1)*(Z-cmin)/(cmax-cmin))+1);
% CData for surface2
C2 = 64+C1;
% Update the CDatas for each object.
set(h(1),'CData',C1);
set(h(2),'CData',C2);
% Change the CLim property of axes so that it spans the
% CDatas of both objects.
caxis([min(C1(:)) max(C2(:))])