From 71ba720dc1b4034ffa80bc92ba6d268cee61291e Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Sat, 18 Aug 2018 10:25:19 +0200 Subject: [PATCH] calculate and store intersections and slope --- regression.hh | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/regression.hh b/regression.hh index 208c02a..e692e66 100644 --- a/regression.hh +++ b/regression.hh @@ -12,37 +12,41 @@ namespace DSP { template class SimpleLinearRegression { - TYPE avgX, avgY; - TYPE varX, covXY; + TYPE xint_, yint_, slope_; public: - SimpleLinearRegression(TYPE *x, TYPE *y, int LEN) : avgX(0), avgY(0), varX(0), covXY(0) + SimpleLinearRegression(TYPE *x, TYPE *y, int LEN) { + TYPE avgX(0), avgY(0); for (int i = 0; i < LEN; ++i) { avgX += x[i]; avgY += y[i]; } avgX /= LEN; avgY /= LEN; + TYPE varX(0), covXY(0); for (int i = 0; i < LEN; ++i) { varX += (x[i] - avgX) * (x[i] - avgX); covXY += (x[i] - avgX) * (y[i] - avgY); } + xint_ = avgX - avgY * varX / covXY; + slope_ = covXY / varX; + yint_ = avgY - slope_ * avgX; } TYPE xint() { - return avgX - avgY * varX / covXY; + return xint_; } TYPE slope() { - return covXY / varX; + return slope_; } TYPE yint() { - return avgY - slope() * avgX; + return yint_; } TYPE operator () (TYPE x) { - return yint() + slope() * x; + return yint_ + slope_ * x; } };