Area between a curve and a baseline
Mostrar comentarios más antiguos
I want to create a base line (red line) from the plot and calculate area between the base line and curve (blue line).Curve is a vector. Baseline is drawn manually using code below. [x y]=ginput(2); line(x,y);
Any help/ suggestions is highly appreciated.
Thanks

Respuesta aceptada
Más respuestas (1)
Teja Muppirala
el 13 de Nov. de 2012
You could try something along the lines of this:
% Just making some data
x0 = 0:0.001:5;
y0 = sin(x0);
plot(x0,y0);
grid on; set(gca,'layer','top');
% Get your two points
[x y]=ginput(2); line(x,y);
% Break up the line segment into a sufficiently fine grid
N = 10001;
x_fine = linspace(x(1),x(2),N);
dx = x_fine(2)-x_fine(1);
% Interpolate the values at the grid points
top = interp1(x0,y0,x_fine); % Top of the area
bottom = interp1(x,y,x_fine); % Bottom of the area
% Get the area using TRAPZ and show it
area = dx*trapz(top-bottom)
patch([x_fine fliplr(x_fine)], [top fliplr(bottom)],'r');
Just replace the sine with whatever data you are using (the example above uses row vectors, so if your data is in a column instead, you'll probably have to make some minor modifications)
1 comentario
Joe Abraham
el 28 de Nov. de 2012
Categorías
Más información sobre Numerical Integration and Differentiation en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!