Indefinite integral for a step function with variable number of steps

Hello friends,
I have a function handle which is defined by interp1. Is there a way to find its indefinite integral?
For instance
x0=[1 2 5 7 10];y0=[2 1 3 2]; f=@(x)interp1(x0,y0,x,'previous');
Please note the above example is just a simple case (I know how to handle this easy case). My function is a step function with many steps where the number of steps are not known to me beforehand. So, in general my function is defined by f=@(x)interp1(mesh,c,x,'previous'); where mesh is my x-data, c is a vector of steps or y-data. How to find the indefinite integral of this function?
Thanks in advance!
Babak

 Accepted Answer

The definite integral between a and b where mesh(1) <= a < b <= mesh(end) can be computed as for every other function as
value_integral = integral(f,a,b)
where
f = @(x)interp1(mesh,c,x,'previous')

3 Comments

Unfortunately, even the definite integral fails. Try the following commands
x0=[1 2 5 7 10];y0=[2 1 3 2]; f=@(x)interp1(x0,y0,x,'previous');
value_integral = integral(f,2.5,3.6)
then I get the following error message
Error using interp1>reshapeAndSortXandV (line 445)
X and V must be of the same length.
Error in interp1 (line 128)
[X,V,orig_size_v] = reshapeAndSortXandV(X,V);
Error in @(x)interp1(x0,y0,x,'previous')
Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
Error in integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
Error in integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
y0 has only 4 elements. It must be of the same size as x0 - thus have 5 elements.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!