简体   繁体   中英

In matlab, how to calculate area under the plot above a threshold horizontal line? Fig attached

I need to calculate the area above the threshold line, ie the shaded area

阴谋

Basically, you want to perform numerical integration. In MATLAB , you could use the trapz function for this (which performs a trapezoidal numerical integration).

What you need to do is substract the value of the red line in your graph from the value of the blue line. However, since you are only interested in the areas where the blue line is located above the red line, you need to take out all values below zero (by for example setting them to zero).

Consider this example below: 使用 trapz 函数的示例情况

Here, we have two lines ( y1 and y2 ). Say we want to numerically calculate the green shaded area at the right side of the intersection. In that case, we could do that using the following code:

% Generate the data
x = linspace(0, 4, 100);

y1 = -x + 2; % red line
y2 = x;      % blue line

% Take the difference between y2 and y1. Filter all elements smaller than 0.
dy = y2 - y1;
dy(dy < 0) = 0; % Excludes all points where (y1 > y2)

% Numerically calculate the area using trapz
area_numerical = trapz(x, dy);

If we run this small script, we will find an area of 9.000306 . From mathematics, we know that the area of a triangle is 0.5 * base * height . Hence, the exact area of the green shaded area is 0.5 * (4--2) * (4-1) , which equals 9 . As you can see, the numerically calculated area is very close, but not exactly equal to the analytical value. This has to do with the approximations used in the trapezoidal numerical integration scheme and the discrete nature of our data.

Of course, this example is much simpler than your actual data. However, the exact same procedure can be used in your case.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM