Add createSignalFromSignal
This commit is contained in:
parent
25f49008f8
commit
a072c1f6a4
56
MMS24-25.c
56
MMS24-25.c
@ -200,3 +200,59 @@ MMSignal *createSignal() {
|
|||||||
|
|
||||||
return signal;
|
return signal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MMSignal *createSignalFromSignal(MMSignal *pmmsIn) {
|
||||||
|
MMSignal *signal = createSignal();
|
||||||
|
|
||||||
|
// Initialize and copy the values (deep copy)
|
||||||
|
signal->pdValues = (double*) malloc(sizeof(double) *pmmsIn->iNumValues);
|
||||||
|
if (signal->pdValues == NULL)
|
||||||
|
_error("createSignalFromSignal: Failed to allocate memory for signal->pdValues\n");
|
||||||
|
|
||||||
|
for (int i = 0; i < pmmsIn->iNumValues; i++) {
|
||||||
|
signal->pdValues[i] = pmmsIn->pdValues[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy shallow items
|
||||||
|
signal->iNumValues = pmmsIn->iNumValues;
|
||||||
|
signal->dArea = pmmsIn->dArea;
|
||||||
|
signal->dMean = pmmsIn->dMean;
|
||||||
|
signal->dStdDev = pmmsIn->dStdDev;
|
||||||
|
signal->dMedian = pmmsIn->dMedian;
|
||||||
|
|
||||||
|
// Deep copy of Extrema
|
||||||
|
signal->pexExtrema = (Extrema*) malloc(sizeof(Extrema));
|
||||||
|
if (signal->pexExtrema == NULL)
|
||||||
|
_error("createSignalFromSignal: Failed to allocate memory for signal->pexExtrema\n");
|
||||||
|
|
||||||
|
signal->pexExtrema->iGlobalMinPos = pmmsIn->pexExtrema->iGlobalMinPos;
|
||||||
|
signal->pexExtrema->iGlobalMaxPos = pmmsIn->pexExtrema->iGlobalMaxPos;
|
||||||
|
|
||||||
|
signal->pexExtrema->pexLocalMax = (LocalExtrema*) malloc(sizeof(LocalExtrema));
|
||||||
|
if (signal->pexExtrema->pexLocalMax == NULL)
|
||||||
|
_error("createSignalFromSignal: Failed to allocate memory for signal->pexExtrema->pexLocalMax\n");
|
||||||
|
|
||||||
|
signal->pexExtrema->pexLocalMax->iNumLocalExtrema = pmmsIn->pexExtrema->pexLocalMax->iNumLocalExtrema;
|
||||||
|
signal->pexExtrema->pexLocalMax->piLocalExtremaPos = (int*) malloc(sizeof(int) *pmmsIn->pexExtrema->pexLocalMax->iNumLocalExtrema);
|
||||||
|
if (signal->pexExtrema->pexLocalMax->piLocalExtremaPos == NULL)
|
||||||
|
_error("createSignalFromSignal: Failed to allocate memory for signal->pexExtrema->pexLocalMax->piLocalExtremaPos\n");
|
||||||
|
|
||||||
|
for (int i = 0; i < pmmsIn->pexExtrema->pexLocalMax->iNumLocalExtrema; i++) {
|
||||||
|
signal->pexExtrema->pexLocalMax->piLocalExtremaPos[i] = pmmsIn->pexExtrema->pexLocalMax->piLocalExtremaPos[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
signal->pexExtrema->pexLocalMin = (LocalExtrema*) malloc(sizeof(LocalExtrema));
|
||||||
|
if (signal->pexExtrema->pexLocalMin == NULL)
|
||||||
|
_error("createSignalFromSignal: Failed to allocate memory for signal->pexExtrema->pexLocalMin\n");
|
||||||
|
|
||||||
|
signal->pexExtrema->pexLocalMin->iNumLocalExtrema = pmmsIn->pexExtrema->pexLocalMin->iNumLocalExtrema;
|
||||||
|
signal->pexExtrema->pexLocalMin->piLocalExtremaPos = (int*) malloc(sizeof(int) *pmmsIn->pexExtrema->pexLocalMin->iNumLocalExtrema);
|
||||||
|
if (signal->pexExtrema->pexLocalMin->piLocalExtremaPos == NULL)
|
||||||
|
_error("createSignalFromSignal: Failed to allocate memory for signal->pexExtrema->pexLocalMin->piLocalExtremaPos\n");
|
||||||
|
|
||||||
|
for (int i = 0; i < pmmsIn->pexExtrema->pexLocalMin->iNumLocalExtrema; i++) {
|
||||||
|
signal->pexExtrema->pexLocalMin->piLocalExtremaPos[i] = pmmsIn->pexExtrema->pexLocalMin->piLocalExtremaPos[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return signal;
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user