Add add all remaining MMS-Functions; Questions remain open; Add Region markers

This commit is contained in:
Frederik Beimgraben 2025-01-11 19:31:20 +01:00
parent a072c1f6a4
commit 8595360963

View File

@ -19,6 +19,7 @@
#include <stdio.h>
#include <stdarg.h>
// #region Error Handling and Debugging
void _error(char *fmt, ...) {
fprintf(stderr, "<\x1B[31;1m ERROR \x1B[0m: \x1B[34m'");
@ -55,7 +56,9 @@ void _warn(char *fmt, ...) {
fprintf(stderr, "'\x1B[0m\n");
}
// #endregion
// #region Aufgabe 1
double interpolateLine(
double dX1,
double dY1,
@ -256,3 +259,75 @@ MMSignal *createSignalFromSignal(MMSignal *pmmsIn) {
return signal;
}
MMSignal *createSignalWithDefault(int iArrayLen, double dDefaultValue) {
MMSignal *signal = createSignal();
signal->pdValues = (double*) malloc(sizeof(double) *iArrayLen);
if (signal->pdValues == NULL)
_error("createSignalWithDefault: Failed to allocate memory for signal->pdValues\n");
for (int i = 0; i < iArrayLen; i++) {
signal->pdValues[i] = dDefaultValue;
}
signal->iNumValues = iArrayLen;
return signal;
}
MMSignal *createSignalFromDoubleArray(int iArrayLen, double *pdIn) {
MMSignal *signal = createSignal();
signal->pdValues = (double*) malloc(sizeof(double) *iArrayLen);
if (signal->pdValues == NULL)
_error("createSignalFromDoubleArray: Failed to allocate memory for signal->pdValues\n");
for (int i = 0; i < iArrayLen; i++) {
signal->pdValues[i] = pdIn[i];
}
signal->iNumValues = iArrayLen;
return signal;
}
MMSignal *createSignalFromFile(char *pcInName) {
double *pdIn = NULL;
int iArrayLen = readDoubleArray(pcInName, &pdIn);
MMSignal *signal = createSignal();
signal->pdValues = (double*) malloc(sizeof(double) *iArrayLen);
if (signal->pdValues == NULL)
_error("createSignalFromFile: Failed to allocate memory for signal->pdValues\n");
for (int i = 0; i < iArrayLen; i++) {
signal->pdValues[i] = pdIn[i];
}
signal->iNumValues = iArrayLen;
return signal;
}
void writeMMSignal(char *pcInName, MMSignal *pmmsIn) {
writeDoubleArray(
pmmsIn->pdValues,
pmmsIn->iNumValues,
pcInName
);
}
void deleteSignal(MMSignal *pmmsIn) {
free(pmmsIn->pdValues);
free(pmmsIn->pexExtrema->pexLocalMax->piLocalExtremaPos);
free(pmmsIn->pexExtrema->pexLocalMax);
free(pmmsIn->pexExtrema->pexLocalMin->piLocalExtremaPos);
free(pmmsIn->pexExtrema->pexLocalMin);
free(pmmsIn->pexExtrema);
free(pmmsIn);
}
// #endregion
// #region Aufgabe 2