init
This commit is contained in:
28
Common/DTS.Common.Calculations/Integral.cs
Normal file
28
Common/DTS.Common.Calculations/Integral.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
namespace DTS.Common.Calculations
|
||||
{
|
||||
public static class Integral
|
||||
{
|
||||
/// <summary>
|
||||
/// integrates a channel over an interval
|
||||
/// </summary>
|
||||
/// <param name="input">data to integrate</param>
|
||||
/// <param name="start">index to start integration at (inclusive)</param>
|
||||
/// <param name="end">index to end integration at (inclusive)</param>
|
||||
/// <returns></returns>
|
||||
public static double DefiniteIntegral(double[] input, int start, int end, double SPS)
|
||||
{
|
||||
//we use trapezoidal summation to get integral, there is an assumption that the input data is
|
||||
//tightly time aligned (otherwise we'd have to divide each interval by the actual distance, and not 1/2)
|
||||
//=(SUMPRODUCT(H25:H56,A26:A57)-SUMPRODUCT(A25:A56,H26:H57)+A57*H57-A25*H25)/2
|
||||
double d = 0;
|
||||
for (int i = start + 1; i < end; i++)
|
||||
{
|
||||
d += 2D * input[i];
|
||||
}
|
||||
d += input[start];
|
||||
d += input[end];
|
||||
|
||||
return .5D * d / SPS;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user