How to calculate the area between two curves

조회 수: 2 (최근 30일)
Paolo Rosettani
Paolo Rosettani 2021년 1월 7일
댓글: Paolo Rosettani 2021년 1월 8일
Hi,
How can I calculate the erea between this two curves? (I need the yellow coloured area)
where:
x1 = [0 1 1.5608 2.4538 2.7360];
y1 = [0 0 -0.8278 -0.3777 -1.5954];
and
x2 = {vector 14494x1}
y2 = {vector 14494x1}
All the datas are in the attached Curve.mat file.
Thank you in advance!
  댓글 수: 2
Rik
Rik 2021년 1월 7일
What did you try already?
Paolo Rosettani
Paolo Rosettani 2021년 1월 7일
I've tried this:
I used
trapz
for each curve and then subtract them...
but with this way I cannot find the yellow area (in the prevoius figure)

댓글을 달려면 로그인하십시오.

채택된 답변

David Wilson
David Wilson 2021년 1월 8일
편집: David Wilson 2021년 1월 8일
Try the following : I've used one of the many interpolation routines, but I notice that you have not sorted your (x2, y2) data, and that you must extrapolate to get the full range.
load curves
x1 = [0 1 1.5608 2.4538 2.7360];
y1 = [0 0 -0.8278 -0.3777 -1.5954];
plot(x1, y1, x2, y2)
grid on
%% Now interpolate x1 to x2
% sort first (for some strange reason)
[x2s, idx] = sort(x2, 'ascend');
y2s = y2(idx);
[y1i] = interp1(x1, y1, x2s, 'pchip', 'extrap'); % Assume extrapolation
subplot(2,1,1);
plot(x2s, [y1i], '-', x2s, y2s)
ylim([-2, 0.5])
dy = abs([y1i-y2s]);
A = trapz(x2s,dy)
subplot(2,1,2);
plot(x2s, abs([y1i-y2s]))
ylabel('|y_1-y_2|')
title(sprintf('Area = %2.3f', A))
  댓글 수: 1
Paolo Rosettani
Paolo Rosettani 2021년 1월 8일
Thank you so much!
This solution is perfect :-)

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Fit Postprocessing에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by