mirror of
https://github.com/aicodix/dsp.git
synced 2026-04-27 14:30:36 +00:00
calculate and store intersections and slope
This commit is contained in:
parent
af22ddb8fd
commit
71ba720dc1
1 changed files with 11 additions and 7 deletions
|
|
@ -12,37 +12,41 @@ namespace DSP {
|
|||
template <typename TYPE>
|
||||
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;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue