阴影和计算特定区域
Shade and calculate specific area
我试图以某种方式更改代码,以便只有第一个区域是灰色阴影。如何将水平线设置为只出现在我想要遮蔽的区域下方?
另外我想计算一个区域的面积。我该如何实现?我知道它是 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])
曲线:-
您可以将 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 ] )
您也可以尝试这个简单的选项:
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))
我试图以某种方式更改代码,以便只有第一个区域是灰色阴影。如何将水平线设置为只出现在我想要遮蔽的区域下方?
另外我想计算一个区域的面积。我该如何实现?我知道它是 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])
曲线:-
您可以将 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 ] )
您也可以尝试这个简单的选项:
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))