【问题标题】:Shade and calculate specific area着色并计算特定区域
【发布时间】:2016-11-20 02:39:45
【问题描述】:

我尝试以某种方式更改代码,以便只有第一个区域是灰色阴影。如何将水平线设置为只出现在我想要遮蔽的区域下方?

此外,我想计算一个区域的面积。我该如何做到这一点?我知道它是trapz,但我不确定如何设置边界。谢谢!

x = 0:.01:4*pi;  %// x data
y = sin(x);      %// y data
level = 0.5;     %// level
plot(x, y)
hold on
area(x, max(y, level), level, 'EdgeColor', 'none', 'FaceColor', [.7 .7 .7])

曲线:-

【问题讨论】:

    标签: matlab plot matlab-figure area curve


    【解决方案1】:

    您可以将area 图中的 x 轴范围限制为感兴趣的范围,例如从 0 到 4,然后计算该范围内函数的结果值。对于基线:您可以将其隐藏在area 命令中,并使用line 命令手动添加。

    x = 0:.01:4*pi;  %// x data
    y = sin(x);      %// y data
    level = 0.5;     %// level
    plot(x, y)
    hold on
    
    x_interest = 0:.01:4;
    y_interest = sin(x_interest);
    area(x_interest, max(y_interest, level), level, ...
        'EdgeColor', 'none', 'FaceColor', [.7 .7 .7], ...
        'ShowBaseLine', 'off');
    line( [ min(x_interest) max(x_interest) ], [ level level ] )
    

    【讨论】:

    • 非常感谢! :) 我怎么知道计算给定表面的面积。很确定它是trapz,但不确定边界。如果我没有明确给出分数,我可能需要使用交集。您有什么想法吗?
    • @Detox:你是对的。我错过了你问题的那一部分。希望这会有所帮助:de.mathworks.com/matlabcentral/answers/…
    • 谢谢!最后一个问题。如果我想在图片中阴影下方的另一个区域着色,但它位于下部扇区,则区域也将填充两条线之间的扇区。我怎样才能避免这种情况发生?
    • @Detox:你是什么意思?相同的门槛,但线下?我会额外调用area,如下所示:area(x_interest2, min(y_interest2, level), level, 'EdgeColor', 'none', 'FaceColor', [.7 .7 .7], 'ShowBaseLine', 'off'); - 并使用min 而不是max
    【解决方案2】:

    你也可以试试这个简单的选项:

    x = 0:.01:4*pi;  %// x data
    y = sin(x);      %// y data
    level = 0.5;     %// level
    lineStart = find(y>=level,1);
    lineEnd = find(y(lineStart:end)<=level,1)+lineStart;
    plot(x,y)
    hold all
    area(x(lineStart:lineEnd),y(lineStart:lineEnd),...
         level,'EdgeColor', 'none', 'FaceColor', [.7 .7 .7],'ShowBaseLine','off')
    line([x(lineStart),x(lineEnd)],[level level ])
    hold off
    

    没有先验定义感兴趣的领域:

    别忘了hold off...

    计算面积: A = trapz(x(lineStart:lineEnd),y(lineStart:lineEnd))

    【讨论】:

    • 感谢您的努力,伙计!一个问题。 lineStart = find(y&gt;=level,1);中的1是什么意思
    • 表示'第一次寻找条件为真',所以只给出第一次增加y的级别以上
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多