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 - 理所当然地 - 搞砸了。
我试图填充水平线和曲线之间的区域。我正在按照
我用来生成图表的代码是
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 - 理所当然地 - 搞砸了。