/// <summary>
 /// Converts the value using the apropriate converter. Start time is included. Endtime is not
 /// </summary>
 /// <param name="values"></param>
 /// <returns></returns>
 public virtual TimeStampValue Convert(TimeStampValue val)
 {
   if (val.Time >= Start & val.Time < End)
      return new TimeStampValue(val.Time, ConvertFunction(val.Value));
   else
      return val;
 }
Ejemplo n.º 2
0
    /// <summary>
    /// Aligns two series be returning only the common time values
    /// </summary>
    /// <param name="t1"></param>
    /// <param name="t2"></param>
    /// <param name="tout1"></param>
    /// <param name="tout2"></param>
    public static void AlignSeries(TimeStampSeries t1, TimeStampSeries t2, out TimeStampValue[] tout1, out TimeStampValue[] tout2)
    {
      int t1count = 0;
      int t2count = 0;

      List<TimeStampValue> newT1values = new List<TimeStampValue>();
      List<TimeStampValue> newT2values = new List<TimeStampValue>();

      if (t1.Count != 0 & t2.Count != 0)
      {
        while (t1count < t1.Count && t1.Items[t1count].Time < t2.StartTime)
          t1count++;

        while (t2count < t2.Count && t2.Items[t2count].Time < t1.StartTime)
          t2count++;

        for (int i = t1count; i < t1.Count; i++)
        {
          while (t2count < t2.Count - 1 & t2.Items[t2count].Time < t1.Items[i].Time)
            t2count++;

          if (t1.Items[i].Time == t2.Items[t2count].Time)
          {

            newT1values.Add(t1.Items[i]);
            newT2values.Add(t2.Items[t2count]);
          }
        }
      }
      tout1 = newT1values.ToArray();
      tout2 = newT2values.ToArray();
    }