Matlab 2017 中的填充函数不起作用

fill function in Matlab 2017 does not work

我试图填充水平线和曲线之间的区域。我正在按照 中的说明进行操作。 2条曲线是

我用来生成图表的代码是

alpha = [0:0.01:1];
mu = 1;
V = [0:0.01:10];
Lambda1 = 2;
y2 = (1./(mu-alpha*Lambda1)+2*alpha*Lambda1./((mu-alpha*Lambda1).^2)).*(alpha<=0.3)+max(V).*(alpha>0.3);
f0 = max(V).*ones(1,length(alpha));
A = [alpha,fliplr(alpha)];
Y1 = [f0,fliplr(y2)];     
figure
h1 = fill(A,Y1,'k'),axis([0 1 0 11]),
set(h1, 'FaceAlpha', 0.1)

思路是alpha是运行变量,即横轴。蓝色曲线是分段函数,即alpha=0.3之前是二次函数,alpha=0.3之后是10。基本上,我想要0<=alpha<=0.3时的区域被遮蔽。

我认为我的上述代码可以工作,因为我认为我了解 fill 函数的工作原理。 fill(x,y,'r')中的x,y是2个向量,表示二维中a股边界的坐标space.

我不知道为什么在我的情况下它不起作用...

您的代码是正确的。但是你的函数有一个 alpha=0.5 的奇点:(mu-0.5*Lambda1)=0

所以你的 y2(51)=NaN 和 Matlab - 理所当然地 - 搞砸了。