protected OnlinePearsonsRCalculator(OnlinePearsonsRCalculator original, Cloner cloner) : base(original, cloner) { covCalculator = cloner.Clone(original.covCalculator); sxCalculator = cloner.Clone(original.sxCalculator); syCalculator = cloner.Clone(original.syCalculator); }
public static double Calculate(IEnumerable <double> first, IEnumerable <double> second, out OnlineCalculatorError errorState) { IEnumerator <double> firstEnumerator = first.GetEnumerator(); IEnumerator <double> secondEnumerator = second.GetEnumerator(); OnlineCovarianceCalculator covarianceCalculator = new OnlineCovarianceCalculator(); // always move forward both enumerators (do not use short-circuit evaluation!) while (firstEnumerator.MoveNext() & secondEnumerator.MoveNext()) { double x = secondEnumerator.Current; double y = firstEnumerator.Current; covarianceCalculator.Add(x, y); if (covarianceCalculator.ErrorState != OnlineCalculatorError.None) { break; } } // check if both enumerators are at the end to make sure both enumerations have the same length if (covarianceCalculator.ErrorState == OnlineCalculatorError.None && (secondEnumerator.MoveNext() || firstEnumerator.MoveNext())) { throw new ArgumentException("Number of elements in first and second enumeration doesn't match."); } else { errorState = covarianceCalculator.ErrorState; return(covarianceCalculator.Covariance); } }
public OnlineLinearScalingParameterCalculator() { targetMeanCalculator = new OnlineMeanAndVarianceCalculator(); originalMeanAndVarianceCalculator = new OnlineMeanAndVarianceCalculator(); originalTargetCovarianceCalculator = new OnlineCovarianceCalculator(); Reset(); }
protected OnlineLinearScalingParameterCalculator(OnlineLinearScalingParameterCalculator original, Cloner cloner) : base(original, cloner) { targetMeanCalculator = cloner.Clone(original.targetMeanCalculator); originalMeanAndVarianceCalculator = cloner.Clone(original.originalMeanAndVarianceCalculator); originalTargetCovarianceCalculator = cloner.Clone(original.originalTargetCovarianceCalculator); // do not reset the calculators here }
protected OnlineCovarianceCalculator(OnlineCovarianceCalculator original, Cloner cloner) : base(original, cloner) { Cn = original.Cn; xMean = original.xMean; yMean = original.yMean; n = original.n; errorState = original.errorState; }
public static double Calculate(IEnumerable<double> first, IEnumerable<double> second, out OnlineCalculatorError errorState) { IEnumerator<double> firstEnumerator = first.GetEnumerator(); IEnumerator<double> secondEnumerator = second.GetEnumerator(); OnlineCovarianceCalculator covarianceCalculator = new OnlineCovarianceCalculator(); // always move forward both enumerators (do not use short-circuit evaluation!) while (firstEnumerator.MoveNext() & secondEnumerator.MoveNext()) { double x = secondEnumerator.Current; double y = firstEnumerator.Current; covarianceCalculator.Add(x, y); if (covarianceCalculator.ErrorState != OnlineCalculatorError.None) break; } // check if both enumerators are at the end to make sure both enumerations have the same length if (covarianceCalculator.ErrorState == OnlineCalculatorError.None && (secondEnumerator.MoveNext() || firstEnumerator.MoveNext())) { throw new ArgumentException("Number of elements in first and second enumeration doesn't match."); } else { errorState = covarianceCalculator.ErrorState; return covarianceCalculator.Covariance; } }