It seems clear. You have multiple slices. Compute the area of each slice. At that point, you could just sum the area of each slice, multiplied by the thickness of a slice. That would be the rectangle rule, an entirely valid estimator.
The paper suggests using trapezoidal rule, a little better estimator of the volume.
And the implementation is trivial. Compute the area of each slice, as a vector of areas, one element for each slice. Then call trapz, giving it the slice thickness as the X argument.
help trapz
TRAPZ Trapezoidal numerical integration.
Z = TRAPZ(Y) computes an approximation of the integral of Y via
the trapezoidal method (with unit spacing). To compute the integral
for spacing different from one, multiply Z by the spacing increment.
For vectors, TRAPZ(Y) is the integral of Y. For matrices, TRAPZ(Y)
is a row vector with the integral over each column. For N-D
arrays, TRAPZ(Y) works across the first non-singleton dimension.
Z = TRAPZ(X,Y) computes the integral of Y with respect to X using the
trapezoidal method. X can be a scalar or a vector with the same length
as the first non-singleton dimension in Y. TRAPZ operates along this
dimension. If X is scalar, then TRAPZ(X,Y) is equivalent to X*TRAPZ(Y).
Z = TRAPZ(X,Y,DIM) or TRAPZ(Y,DIM) integrates across dimension DIM
of Y. The length of X must be the same as size(Y,DIM)).
Example:
Y = [0 1 2; 3 4 5]
trapz(Y,1)
trapz(Y,2)
Class support for inputs X, Y:
float: double, single
See also SUM, CUMSUM, CUMTRAPZ, INTEGRAL.
Documentation for trapz
doc trapz
Other uses of trapz
codistributed/trapz gpuArray/trapz