Add calculations to initMMSignalFeatures

This commit is contained in:
Frederik Beimgraben 2025-01-13 20:10:57 +01:00
parent 7acd3a068e
commit 7476f174a3
2 changed files with 17 additions and 4 deletions

View File

@ -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);
}

View File

@ -516,5 +516,7 @@ int main (int iArgC, char** ppcArgV){
testApplyPascalConvForSeriesGT40();
testCalcExtrema();
initMMSignalFeatures(createSignal());
return 0;
}