【问题标题】:Colouring Bounded Area Under Curve Matlab曲线下着色有界区域 Matlab
【发布时间】:2016-04-06 10:31:24
【问题描述】:

我想知道是否有人知道如何为以下代码的曲线下区域着色。我尝试使用area(Mu),但是这会返回一个与绘图略有不同的阴影区域。

n=1;
a=[0:0.001:4];
A=(a.*n);
B=(n-n.*a);
C=(1-n);
Mu=(-B+sqrt((B.^2)-(4.*A.*C)))./(2.*A);
plot(a,Mu)
xlim([0 4])
ylim([0 .8])

【问题讨论】:

  • 直截了当...只需将plot 替换为area 即可得到area(a,Mu) 行。这可以在documentation 中找到,如下所示:«area(X,Y) 对于向量XYarea(X,Y)plot(X,Y) 相同,除了0 和@987654334 之间的区域@ 已填充。»
  • @Matt 删除 plot 调用不是正确的通用答案,如果用户想要对边界做一些“特殊”的事情。 OP已经尝试过area,所以她并不是不知道该功能的存在......
  • @excaza 当然,如果 OP 需要plot,她需要在hold on 之后调用area,或者先绘制区域然后绘制线条。她尝试了area(Mu),但没有尝试area(a,Mu)……这就是为什么使用replace这个词来强调论点完全相同的原因。引用也与此相对应。
  • @Matt 告诉他们从代码中删除与所问问题无关的函数,因此 伤害 他们的函数,不如向他们解释为什么他们已经尝试过没有像他们预期的那样工作。
  • @excaza 我不同意它损害该功能,因为我假设 OP 知道如何在需要时再次画线。我想用我的第一条评论表达的唯一一件事就是对area 使用与plot 相同的参数。我同意我可以解释为什么它会导致错误的结果。即因为x轴不匹配。顺便说一句:我也同意this 评论。

标签: matlab area


【解决方案1】:

你快到了。 area(Mu) 使用默认值,在这种情况下,它实际上执行area([1:length(Mu)],Mu)。这会给您带来不希望的结果,而 area(a,Mu)plot(a,Mu) 相同,只是填充了 0 和 Mu 之间的区域。

使用area(a,Mu)。然后在该区域的顶部绘制您的线,或者只是更改该区域的边缘。请参见下面的示例:

n=1;
a=[0:0.001:4];
A=(a.*n);
B=(n-n.*a);
C=(1-n);
Mu=(-B+sqrt((B.^2)-(4.*A.*C)))./(2.*A);
area(a,Mu)
hold on
xlim([0 4])
ylim([0 .8])
plot(a,Mu)

【讨论】:

  • 我刚刚意识到这几乎正是您所尝试的 :P 无论如何,这应该可以工作,如果其他用户将来遇到同样的问题,最好发布答案。如果这是您正在寻找的,请“接受”答案并投票。如果您还需要什么,请告诉我。
  • 嗯,可能想在其中添加一个hold on
  • 您还没有解释area(Mu)area(a, Mu) 之间的区别。 “它会起作用”一点用处都没有。
  • 我想说help area 可以留给用户尝试。但是,我完全愿意进行彻底的解释。不过,说它“……一点用都没有”似乎有些夸张和不必要。我希望你批准我的编辑,请随时评论任何改进的想法。为了其他用户的利益,我很乐意进行编辑。
  • 一点也不夸张。人们需要了解他们在做什么,而不是仅仅因为它在一种情况下有效就盲目地复制+粘贴代码。
猜你喜欢
  • 2017-07-13
  • 1970-01-01
  • 2011-12-15
  • 2023-03-16
  • 1970-01-01
  • 2012-08-27
  • 2020-08-21
  • 2014-12-02
相关资源
最近更新 更多