Matlab 着色并计算比面积

Matlab 着色并计算比面积,matlab,plot,matlab-figure,area,curve,Matlab,Plot,Matlab Figure,Area,Curve,我试图改变代码的方式,使只有第一个区域是灰色阴影。如何设置水平线,使其仅显示在要着色的区域下方 此外,我想计算一个区域的面积。我如何做到这一点?我知道这是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',

我试图改变代码的方式,使只有第一个区域是灰色阴影。如何设置水平线,使其仅显示在要着色的区域下方

此外,我想计算一个区域的面积。我如何做到这一点?我知道这是
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])
曲线:-

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

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 ] )

您也可以尝试以下简单选项:

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
x=0:.01:4*pi;%//x数据
y=sin(x);%//y数据
级别=0.5;%//水平
lineStart=查找(y>=级别,1);

lineEnd=find(y(lineStart:end)非常感谢!:)我如何知道计算给定曲面的面积。很确定是特拉普,但我不确定边界。如果我没有明确给出点,我可能需要使用交点。你那边有什么想法吗?@解毒:你说得对。我错过了你问题的那一部分。希望这有帮助:谢谢!最后一个问题。如果我想在图片中阴影部分下方的另一个区域进行阴影处理,但该区域位于较低的扇区,则该区域也将填充两条线之间的扇区。我怎样才能避免这种情况发生?@解毒:什么意思?相同的门槛,但在底线之下?我会使用另一个调用
area
,如下所示:
area(x_interest2,min(y_interest2,level),level,'EdgeColor','none','FaceColor',[7.7.7],'ShowBaseLine','off')
——并使用
min
而不是
max
。感谢您的努力,伙计!一个问题。
lineStart=find(y>=level,1)中的1是什么意思
它的意思是“在条件第一次为真时查找”,因此它只给出高于该水平的
y
的第一次增加