## integral of a piece wise function

Asked by Giorgio Buoncristiano

### Giorgio Buoncristiano (view profile)

on 14 Sep 2019 at 0:36
Latest activity Commented on by Giorgio Buoncristiano

### Giorgio Buoncristiano (view profile)

on 17 Sep 2019 at 12:16
Accepted Answer by Prabhan Purwar

### Prabhan Purwar (view profile)

Hello
I have just started using matlab and I'm blocked in calculating the integral of a simple piece wise fct , need this integral to calculate the variation of the state of charge of a battery . I tried to use cumsum in a for cycle but it doesn't really work. Can someone please help me or give me some ideas ?

Walter Roberson

### Walter Roberson (view profile)

on 14 Sep 2019 at 4:08
I recommend that you clean up your code by using elseif
To do an integral use integral() with the waypoints option . But be careful, as that passes vectors of x values and you have to return something the same size. Suggest that you read about "logical indexing"

### Tags

Answer by Prabhan Purwar

### Prabhan Purwar (view profile)

on 17 Sep 2019 at 11:54

Hi,
Integral of a function can be calculated either by making use of integral() function or trapz() function, which is more suited for calculating integral of a piecewise function.
Please have a look at the following code:
clc
close all
C=10;
dt=0.1;
t=0:dt:35;
for j=1:length(t)
if t(j)<=7
i(j)=20;
else
if t(j)<=10
i(j)=(t(j)-7)/3*(-35)+20;
else
if t(j)<=25
i(j)=-15;
else if t(j)<=35
i(j)=-7.5;
end
end
end
end
end
for j=1:length(t)
I(j)=trapz(t(1:j),i(1:j)); %trapz() function
SoC(j)=((C-I(j))./C).*100;
end
Please refer to the following links for further information
Hope this helps.

#### 1 Comment

Giorgio Buoncristiano

### Giorgio Buoncristiano (view profile)

on 17 Sep 2019 at 12:16
I tried using trapz() but I was not able to correctly use it, thank you! Anyway I did it using cumsum() without a for cycle.