Use a custom baseline to calculate area of a graph
    7 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Rahul Ramesh
 il 4 Giu 2021
  
    
    
    
    
    Commentato: Star Strider
      
      
 il 7 Giu 2021
            Hi,
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.

0 Commenti
Risposta accettata
  Star Strider
      
      
 il 4 Giu 2021
        Use trapz to calculate the area under the curve, and use trapz separately to calculate the area under the line.  
Then subtract them.  
Example — 
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
figure
plot(x, y)
hold on
plot(x, -0.2*x)
hold off
grid
axis('equal')
.
2 Commenti
  Star Strider
      
      
 il 7 Giu 2021
				My pleasure!  
If I understand your comment correctly, yes.  
It returns the area between the x-axis (at y=0) and the line as ‘linearea’, and the area between the x-axis and the curve as ‘yarea’ separately, then subtracts them to return ‘curvearea’.  (The ‘sincarea’ calculation is not necessary for the code, other than serving as a sort of ‘proof’ tthat the code returns the correct result.)  
.
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


