# How to find area under graph between two points ?

133 views (last 30 days)

Show older comments

I used this coding but i dont know how to set the specific points. I used array data.

M = area(A(:,1),A(:,2));

Int = trapz(A(:,1),A(:,2));

##### 1 Comment

Scott MacKenzie
on 12 Jun 2021

### Answers (2)

Vimal Rathod
on 15 Jun 2021

Edited: Vimal Rathod
on 15 Jun 2021

Hi,

If you would want to find area by specific points from array, you could use the indices of array to find the area.

M = trapz(A(k:l,1),A(k:l,2)); % for area between k and l index values of array A

If you would want to find area from a custom point on the line to another custom point on the line, make sure to include the array indices along with the custom point in the area.

%finding area between (x1,y1) and (x2,y2) considering these two lies on the

%plot

%k and l are the indices of array values lying in between these points.

M = trapz([x1,A(k:l,1),x2], [y1, A(K:l,2), y2]);

Hope this helps!

##### 1 Comment

Scott MacKenzie
on 15 Jun 2021

@Vimal Rathod M, in your code, is a handle to the area object, not the area of the object.

@Mohamad Firdaus Bin Adnan's question is limited to a sub-area, as given by "specific points". I asked in my comment for clarification on this, for example whether the specfic points are indices into the A array (k and l in your answer) or values along the x-axis (e.g., 80 and 100).

Scott MacKenzie
on 15 Jun 2021

Edited: Scott MacKenzie
on 17 Jul 2021

Assuming you want the area under the curve between two values of x (the "specific points" in your questions), here's what I put together using test data. The area under the curve is computed from x = 60 to x = 110. The area is computed two ways, using trapz and using integral. They give the same result. trapz is useful if the data are sample points gathered empirically. If you have a formula to work with, then integral can be used. It's also possible to use polyarea, although that is not demonstrated here.

% test data

x = 0:0.1:150;

y = 0.2 + sind(x) .* cosd(2*x).^2;

fun = @(x) (0.2 + sind(x) .* cosd(2*x).^2);

% organize in matrix A, as in question

A = [x' y'];

% plot total area under curve over x domain

area(A(:,1), A(:,2));

xticks(0:10:150);

hold on;

% example "specific points" to find area between

x1 = 60;

x2 = 110;

% find indices of these points in A

idx1 = find(A(:,1) >= x1, 1);

idx2 = find(A(:,1) >= x2, 1);

% show the area under curve between x1 and x2

area(A(idx1:idx2,1), A(idx1:idx2,2), 'facecolor', [.7 .8 .9]);

% get area under curve from x1 to x2 using trapz

a1 = trapz(A(idx1:idx2,1), A(idx1:idx2,2))

% get area under curve from x1 to x2 using integral

a2 = integral(fun, x1, x2)

% print area in chart

ax = gca;

xt = (x2 + x1) / 2;

yt = 0.8 * mean(ax.YLim);

s = sprintf('Area = %.2f', a1);

text(xt, yt, s);

Output in command window:

a1 =

47.285

a2 =

47.285

##### 0 Comments

### See Also

### Community Treasure Hunt

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

Start Hunting!