Matlab 2017中的填充功能不起作用

时间:2017-07-29 14:00:13

标签: matlab fill

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

enter image description here

我用来生成图表的代码是

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之前,它是一个qudratic函数,在alpha=0.3之后,它保持在10.基本上,我希望在0<=alpha<=0.3时得到该区域被遮蔽。

我认为上面的代码会起作用,因为我以为我理解fill函数是如何工作的。 x,y中的fill(x,y,'r')是2个向量,表示2D空间中共享边界的坐标。

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

1 个答案:

答案 0 :(得分:0)

您的代码是正确的。但是,您的函数具有def f5(nums): count = dict() if not nums: for num in nums: if count[num]: count[num] += 1 else: count[num] = 1 return sorted([num for num in count if count[num]>1]) return [] alpha=0.5的奇点。

所以你的(mu-0.5*Lambda1)=0和Matlab-正确地搞砸了。