Area between two curves that intersect

조회 수: 2 (최근 30일)
Harry Smith
Harry Smith 2019년 2월 21일
댓글: Harry Smith 2019년 2월 21일
Hi, i'm trying to find the area between these two plots, i need to find the area of each individual section where the plots overlap. For some reason my 'trapz' commands aren't working. All help would be appreciated. If more info is needed about the program just let me know and i'll see what i can do.
lprofile=xlsread(fname_lprofile);
x1=lprofile(:,1)
y1=lprofile(:,2)
y2=lprofile(:,3)
plot(x1,y1,x1,y2)
x3=2
ex_area=0
fl_area=0
while x3>1 & x3<(n1-1)
if lprofile(x3,2)>lprofile(x3,3)
a1=trapz (lprofile(x3,1),lprofile(x3,2),2)
ex_area=ex_area+a1
x3=x3+1
elseif lprofile(x3,3)>lprofile(x3,2)
a2=trapz(x3,3)
fl_area=fl_area+a2
x3=x3+1
else
x3=x3+1
end
end

채택된 답변

Rik
Rik 2019년 2월 21일
You are using the loop incorrectly, and you don't need it anyway. You are doing an integration over a single point, which is unlikely to work in any context. You could sum the values and divide by the delta x, but by not using array operations you're not taking advantage of the full potential of Matlab.
The method I show below will have a rounding error that increases with the number of crossings, but it shouldn't get too bad, especially if you're using a finer x scale.
% lprofile=xlsread(fname_lprofile);
% x1=lprofile(:,1);
% y1=lprofile(:,2);
% y2=lprofile(:,3);
% plot(x1,y1,x1,y2)
%generate random data instead
x1=linspace(0,2*pi,300);
y1=cos(x1);
y2=sin(x1);
plot(x1,y1,x1,y2)
low=y1-y2;low(low<0)=0;
hi=y2-y1;hi(hi<0)=0;
A_low=trapz(x1,low);
A_hi=trapz(x1,hi);
  댓글 수: 1
Harry Smith
Harry Smith 2019년 2월 21일
Hi,
thank you for your quick answer to my question, it seems so simple when you point it out. I'm used to coding in python, rather than matlab, which is probably why i was trying to loop through it and why i didn't use matrix manipulation (plus matrices is a topic i'm fairly new to).
many thanks.

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Numerical Integration and Differentiation에 대해 자세히 알아보기

태그

제품


릴리스

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by