How can I make a integration with trapz?

Hi everyone,
I have x and y vectors, and ploted y verses x as below:
v=[2.2696;2.2696; 2.4646;2.4646;2.6775;2.6775; 2.9101;2.9101;3.1644];
x=[0 , -0.0476 , -0.0476 , -0.0952 , -0.0952 , -0.1429 , -0.1429 , -0.1905 ,-0.1905];
plot (x,v)
I want to find the inegral (The area under the curve) of curve in range of x=[0 and -0.08]. How can I do that?
Thank you in advance,

 Accepted Answer

Note: The value is negative since x goes backward.
v=[2.2696;2.2696; 2.4646;2.4646;2.6775;2.6775; 2.9101;2.9101;3.1644];
x=[0 , -0.0476 , -0.0476 , -0.0952 , -0.0952 , -0.1429 , -0.1429 , -0.1905 ,-0.1905];
b=x<=0 & x>=-0.08;
xx=[x(b),-0.08];
vv=[v(b);NaN];
trapz(xx,fillmissing(vv,'previous'))
ans = -0.1879

2 Comments

I think that since the function lies all above the x axis, the area should be positive.
I don't compute the area but the integral with trapz with x going backward, so it return negative of the area, as noted in my answer.

Sign in to comment.

More Answers (2)

I don't think you really need trapz for this function
clear,clc
x=[0,-0.0476,-0.0476,-0.0952,-0.0952,-0.1429,-0.1429,-0.1905,-0.1905];
y=[2.2696;2.2696; 2.4646;2.4646;2.6775;2.6775; 2.9101;2.9101;3.1644];
plot (x,y)
x1 = [0,-0.0476,-0.0476,-0.08];
y1 = [2.2696;2.2696; 2.4646;2.4646];
dx = diff(unique(x1,'stable'))
dx = 1×2
-0.0476 -0.0324
dy = unique(y1,'stable')'
dy = 1×2
2.2696 2.4646
area = abs(sum(dx.*dy))
area = 0.1879

4 Comments

Doesn't seem to be correct, with unique you replace the original step function by a linear function. The correct result is
2.2696*(0.0476-0)+2.4646*(0.08-0.0476)
ans = 0.1879
unique shouldn't be a problem since I calculate the area as sum of rectangles.
It is actually necessary in this sense.
Bruno Luong
Bruno Luong on 21 Apr 2022
Edited: Bruno Luong on 21 Apr 2022
Check again. There are 2 steps I give the manual formula and value above: 0.1879
The answer was indeed wrong because unique sorts the output unless specified otherwise. I fixed it and now it works. I also implemented to calculate the absolute value so the area comes out positive.
Thanks for pointing it out @Bruno Luong!

Sign in to comment.

N/A
N/A on 25 Apr 2022
What should I do guys? Please inform me about the correct code

2 Comments

@shahin sharafi Only you can decide
"I want to find the inegral (The area under the curve)"
integral has sign changing with x direction, area has not.
You also stated you want using trapz.
Thank you for your response.

Sign in to comment.

Products

Release

R2019a

Asked:

N/A
on 21 Apr 2022

Commented:

N/A
on 27 Apr 2022

Community Treasure Hunt

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

Start Hunting!