Register to reply

Integrating a Discrete Function in MATLAB

by tramar
Tags: discrete, function, integrating, matlab
Share this thread:
tramar
#1
Oct5-11, 02:14 PM
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.
Phys.Org News Partner Science news on Phys.org
World's largest solar boat on Greek prehistoric mission
Google searches hold key to future market crashes
Mineral magic? Common mineral capable of making and breaking bonds
MATLABdude
#2
Oct7-11, 04:56 AM
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.
tramar
#3
Oct7-11, 12:41 PM
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?

MATLABdude
#4
Oct8-11, 04:01 AM
Sci Advisor
P: 1,724
Integrating a Discrete Function in MATLAB

The Simpson's rule implementation in MATLAB requires a function handle. Since you have a collection of data points, this won't work. And as you don't have a huge number of datapoints, efficiency isn't terribly relevant.
http://www.mathworks.com/help/techdo...on_handle.html

I'd suggest you stick with the trapezoid rule and use the subset extraction method I linked to earlier.


Register to reply

Related Discussions
Integrating with matlab Mechanical Engineering 0
Discrete Math or MATLab? Academic Guidance 6
Integrating data in Matlab Math & Science Software 0
Problems with integrating a function in MATLAB: Inner matrix dimensions must agree Math & Science Software 4