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
Suddenly, the sun is eerily quiet: Where did the sunspots go?
'Moral victories' might spare you from losing again
Mammoth and mastodon behavior was less roam, more stay at home
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