Sic.Framework/MECF.Framework.Common/MECF/Framework/Common/CommonData/FdcDataItem.cs

83 lines
1.4 KiB
C#

using System;
using System.Runtime.Serialization;
namespace MECF.Framework.Common.CommonData
{
[Serializable]
[DataContract]
public class FdcDataItem
{
[DataMember]
public string Name { get; set; }
[DataMember]
public float MaxValue { get; set; }
[DataMember]
public float MinValue { get; set; }
[DataMember]
public float MeanValue
{
get
{
if (SampleCount == 0)
{
return 0f;
}
return Total / (float)SampleCount;
}
}
[DataMember]
public float StdValue
{
get
{
if (SampleCount <= 1)
{
return 0f;
}
return (float)Math.Sqrt(Math.Abs((SqrtTotal - 2f * (Total / (float)SampleCount) * Total + (float)SampleCount * (Total / (float)SampleCount) * (Total / (float)SampleCount)) / (float)(SampleCount - 1)));
}
}
[DataMember]
public float SetPoint { get; set; }
[DataMember]
public float Total { get; set; }
[DataMember]
public float SqrtTotal { get; set; }
[DataMember]
public int SampleCount { get; set; }
public void Clear()
{
MaxValue = float.MinValue;
MinValue = float.MaxValue;
SetPoint = 0f;
Total = 0f;
SampleCount = 0;
SqrtTotal = 0f;
}
public void Update(float value)
{
if (value < MinValue)
{
MinValue = value;
}
if (value > MaxValue)
{
MaxValue = value;
}
Total += value;
SqrtTotal += value * value;
SampleCount++;
}
}
}