From 7476f174a3426a9d3465b1dfae8306d7621cf43f Mon Sep 17 00:00:00 2001 From: Frederik Beimgraben Date: Mon, 13 Jan 2025 20:10:57 +0100 Subject: [PATCH] Add calculations to `initMMSignalFeatures` --- MMS24-25.c | 19 +++++++++++++++---- tests.c | 2 ++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/MMS24-25.c b/MMS24-25.c index 9c893d0..d9bcc81 100644 --- a/MMS24-25.c +++ b/MMS24-25.c @@ -646,6 +646,12 @@ double calculateMean(double *pdIn, int iLen) { * \[ mean(pdIn) = \frac{1}{ |pdIn| } \sum_{i=1}^{ |pdIn| } x_i * = \frac{area(x)}{ |pdIn| } \] */ + + if (iLen == 0) { + _warn("calculateMean: iLen is 0"); + return 0; + } + return calculateArea(pdIn, iLen) / iLen; } @@ -659,6 +665,11 @@ double calculateStddev(double *pdIn, int iLen) { * \[ stddev(pdIn) = \sqrt{ \frac{1}{ |pdIn| } \sum_{i=1}^{ |pdIn| } (x_i - mean(pdIn))^2 } \] */ + if (iLen == 0) { + _warn("calculateStddev: iLen is 0"); + return 0; + } + double mean = calculateMean(pdIn, iLen); double stdDev = 0; @@ -865,10 +876,10 @@ Extrema *initExtrema(double *pdIn, int iLen) { * Initializes the features of a MMSignal struct. */ void initMMSignalFeatures(MMSignal *pmmsIn) { - pmmsIn->dArea = 0; - pmmsIn->dMean = 0; - pmmsIn->dStdDev = 0; - pmmsIn->dMedian = 0; + pmmsIn->dArea = calculateArea(pmmsIn->pdValues, pmmsIn->iNumValues); + pmmsIn->dMean = calculateMean(pmmsIn->pdValues, pmmsIn->iNumValues); + pmmsIn->dStdDev = calculateStddev(pmmsIn->pdValues, pmmsIn->iNumValues); + pmmsIn->dMedian = calculateMedian(pmmsIn->pdValues, pmmsIn->iNumValues); pmmsIn->pexExtrema = initExtrema(pmmsIn->pdValues, pmmsIn->iNumValues); } diff --git a/tests.c b/tests.c index 83cddda..1a271e2 100644 --- a/tests.c +++ b/tests.c @@ -516,5 +516,7 @@ int main (int iArgC, char** ppcArgV){ testApplyPascalConvForSeriesGT40(); testCalcExtrema(); + initMMSignalFeatures(createSignal()); + return 0; }