Messdaten auswerten und abspeichern.



  • Hallo Forengemeinde,

    für mein kleines Projekt möchte ich Messdaten
    auswerten und abspeichern.

    Im Forum habe ich mir schon den ein oder anderen Beitrag durchgelesen
    aber noch nichts was mir bei meinem Problem weiterhilft gefunden.

    Ich erfasse alle 4 ms Messwerte und speichere jeden Messwert in einem
    Array fortlaufend ab (50 Werte), danach ist die Messung abgeschlossen.

    Danach möchte ich jeden einzelnen Wert prüfen ob er in einem definierten
    Messbereich liegt oder nicht. Wenn der Wert außerhalb liegt soll der
    Messpunkt (Index vom Array) und der Messwert in einem weiteren Array
    abgelegt werden.

    Jetzt frage ich mich wie kann ich das Umsetzen. Ist ein
    mehrdimensionales Array dafür geeignet? Den Sinn von diesen Arrays habe
    ich noch nicht verstanden (trotz Buch).

    Ich stelle mir eine Tabelle vor die ich über den auf ruf des ersten
    Indexes aufrufen kann und dann den Messpunkt und den dazugehörigen
    Messwert auslesen kann.
    z.B.

    Index | Messpunkt | Messwert
    ----------------------------
      1   |    3      |   345
      2   |    5      |   367
      3   |    9      |   373
      .   |    .      |    .
      .   |    .      |    .
      .   |    .      |    .
    

    Die Frage ist für mich ist das mit den mehrdimensionalen Arrays
    überhaupt der richtige Ansatz an das Problem zu gehen oder gibt es was,
    was sich dafür besser eignet.

    Danke für hilfreiche Tipps.



  • christofj schrieb:

    Ist ein mehrdimensionales Array dafür geeignet?

    Hallo,

    nein! Das ist schon allein deshalb blöd, weil dann jede Spalte vom selben Typ sein muss.
    Der 100x bessere Weg:

    1. struct mit den Daten
    2. std::vector<DeineStruct> zum speichern


  • christofj schrieb:

    ... soll der
    Messpunkt (Index vom Array) ...
    z.B.

    Index | Messpunkt | Messwert
    ----------------------------
      1   |    3      |   345
      2   |    5      |   367
      3   |    9      |   373
      .   |    .      |    .
      .   |    .      |    .
      .   |    .      |    .
    

    Ist der Messpunkt nun der Index vom Array, oder nicht?
    In Deiner Matrix-Darstellung sieht das nämlich nicht so aus 😕

    Grundsätzlich:
    Pack Deine 50 Messwerte in einen Vektor, durchlaufe den Vektor, und schreibe Sätze, die Deine Bedingung erfüllen, in einen zweiten Vektor -
    oder:
    Untersuche die Daten sofort, und schreibe sie dann wahlweise nur in den einen, oder eben gleich in beide Vektoren.



  • Da deine Datenmenge klein ist (50 Werte x 3 Spalten), ist Jockelxs Weg sehr gut.

    Wenn man große Datenmengen hat, gibt es noch noch die Alternative, die Daten spaltenweise zu speichern. Also ein vector pro Spalte zum Beispiel. Vorteil ist, dass man dann die Spalten, die man nicht braucht, einfach weglassen kann. Außerdem liegen die zusammenpassenden Daten dann direkt hintereinander.

    ABER:
    Ich würde dir vorschlagen, dass du dir Jupyter Notebooks und Python ansiehst - NumPy, Pandas usw. können extrem gut mit sowas umgehen. Warum C++ für diese Aufgabe?



  • Belli schrieb:

    christofj schrieb:

    ... soll der
    Messpunkt (Index vom Array) ...
    z.B.

    Index | Messpunkt | Messwert
    ----------------------------
      1   |    3      |   345
      2   |    5      |   367
      3   |    9      |   373
      .   |    .      |    .
      .   |    .      |    .
      .   |    .      |    .
    

    Ist der Messpunkt nun der Index vom Array, oder nicht?
    In Deiner Matrix-Darstellung sieht das nämlich nicht so aus 😕

    Der Messpunkt ist der Index vom ersten Array in den ich die Daten zuerst einmal reingepackt habe. Nach der Auswertung bleiben dann nur noch die "schlechten" Messwerte übrig. Um später zu wissen an welcher Stelle der "schlechte" Messwert lag, soll der Index als "Messpunkt" gespeichert werden.

    wob schrieb:

    ABER:
    Ich würde dir vorschlagen, dass du dir Jupyter Notebooks und Python ansiehst - NumPy, Pandas usw. können extrem gut mit sowas umgehen. Warum C++ für diese Aufgabe?

    Das Programm soll auf einen µC und ich verwende die Arduino IDE, daher C++.

    Ich werde den Ansatz von Jockelx verfolgen und schauen ob ich da was hingebastelt bekomme. Später soll die Datenmenge 3000 Werte umfassen.

    Danke für eure Hilfe!



  • Welche Programmansätze hast du denn bis jetzt?


Log in to reply