Use a custom baseline to calculate area of a graph
27 views (last 30 days)
I am a beginner level Matlab user. I tried searching the forum, could not find a working answer for this quesiton
I have this graph of Heat Flow vs Time. I need to calculate the mathematical area (Area above the baseline being positive and area below being negative) under the curve with a straight baseline formed between first and the last x-value (which is user defined) as shown in the figure below. At present, i am using the following code
%this limit we defined before is passed on to the trapz function to
lims = (x2_values >=value_of_interest_1)&(x2_values <=value_of_interest_2);
%perform numerical integration using the trapeoidal method
net_heat_flow = trapz(x2_values(lims), y2_values(lims));
However, this code calculates the area based on zero baseline. So, my question is how can i define a custom baseline as a straight line formed between the two points of interest? Can this be done using Matlab?
The figure below is from custom software I am using. However, I am trying to use Matlab for this because there are over 500 data files i need to process.
Thanks. Any help or suggestion is appreciated.
Star Strider on 4 Jun 2021
Use trapz to calculate the area under the curve, and use trapz separately to calculate the area under the line.
Then subtract them.
x = linspace(0,10); % X-Vector
y = 2.5*sinc(x-5) - 0.2*x; % Y-Vector
sincarea = trapz(x, 2.5*sinc(x-5)) % Area Under Original Curve (Reference)
yarea = trapz(x,y) % Area Under Displayed Curve
linearea = trapz(x, -0.2*x) % Area Under The Line
curvearea = yarea - linearea % Area Between Line And Curve