# Integrating a Discrete Function in MATLAB

by tramar
Tags: discrete, function, integrating, matlab
 P: 53 I have a data curve with discrete time points that I imported into MATLAB. The x axis is an array named t: t = 1.0e+003 * 0.0319 0.0505 0.0851 0.1037 0.1356 0.1648 0.2021 0.2313 0.3616 0.5823 0.8880 1.1778 1.4996 1.7814 The y axis named Cp: Cp = 1.0e+004 * 0.0077 0.7846 3.7077 3.2923 1.8769 1.3769 1.0539 0.7769 0.5462 0.3923 0.2692 0.1846 0.1462 0.1385 The plot of the curve looks like this: Essentially I want to integrate the function from zero to one of the time points. I tried using the functions quad and trapz but they seem to return red error messages. The function trapz works when I integrate over the entire curve (trapz(Cp)) but it won't let me specify an integration interval.
 Sci Advisor P: 1,724 Trapz implements the trapezoid rule--if this is what you're looking for, that's great (but since you're not putting in the t-values, you're just getting the sum of x, which may or may not be what you're looking for): http://www.mathworks.com/help/techdoc/ref/trapz.html If you want to integrate only a portion of the data, put in only a portion of the vectors! For instance, to extract the 1st through 5th values of x, you'd type in: >> extract=x(1:5) More on array indexing (including the colon operator used above): http://www.mathworks.com/help/techdo...41.html#f2-428 As per the examples under trapz above, as long as the two input vectors are the same size, trapz should produce something--not sure what the error message is, but if you'd post it, we may be able to help you.
 P: 53 I should have posed the question in a better way... Based on the research I've done I think Simpson's rule is more efficient. I was initially trying to use the quad function: quad(Cp, 0, t(1)) ??? Error using ==> fcnchk at 108 FUN must be a function, a valid string expression, or an inline function object. Error in ==> quad at 66 f = fcnchk(funfcn); I'm guessing that the error is because Cp is a discrete function and not a definite function of x. Essentially I need to know how to integrate this curve with Simpson's rule for a certain interval. Is there a way to do it directly or would I need to use the extract=x(..) function?