Im пытается найти область затененных частей кривой. Синий - выше порога и серый - ниже. В сценарии вы можете изменить соотношение синего и серого, отрегулировав значение уровня. Когда уровень установлен на 2 (рис. 1), области должны быть равны. Когда уровень установлен на 1.6 (рис. 2), синий должен иметь большую площадь, чем серый, и т. Д. Любые мысли о том, как найти области под кривой ниже и выше порога?Вычислите заштрихованную область под кривой выше и ниже порога с помощью trapz и MATLAB
рис 1:
рис 2:
Мой код:
%% Example
x = 0:.01:4*pi;% x data
y = sin(x)+2;% y data
level = 2;% level
plot(x, y)
hold on
x_interest = 0:.01:x(length(y));
y_interest = sin(x_interest)+2;
xlim ([0 x(length(y))])
% Shaded area above level
area(x_interest, max(y_interest, level), level, ...
'EdgeColor', 'none', 'FaceColor', [.6 .7 .8], ...
'ShowBaseLine', 'off');
% Shaded area below level
area(x_interest, min(y_interest, level), level, ...
'EdgeColor', 'none', 'FaceColor', [.5 .5 .5], ...
'ShowBaseLine', 'off');
%%== This did not work ==%%
above = find(y_interest >= level);
below = find(y_interest <= level);
A_above = trapz(above)
A_below = trapz(below)
%% Integrate
plot(x, sin(x)+2)
fun = @(x) sin(x)+2;
integral(fun, 0, x(length(y)))
A = trapz(x,y)
Кажется, все ваши недостающая 'A_above = trapz (x_interest (выше), y_interest (выше))' и также для 'A_below'. – Florian
@ user7411032: Спасибо за очень хорошо сформулированный вопрос. Я желаю, чтобы мы больше следовали вашему примеру. :) – aksadv