|
|
Mittelwertbilung nach Zeitintervall, Messwerte unregelmäßi |
|
Mantequilla |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 10.01.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.01.2018, 15:40
Titel: Mittelwertbilung nach Zeitintervall, Messwerte unregelmäßi
|
|
Guten Tag,
ich komme bei einer Messdatenauswertung nicht weiter. Ich muss aus meinen Messwerten Mittelwerte in 10 Sekunden-Intervallen bilden.
Aber ich erhalte nicht zu jeder Sekunde einen Messwert, weil mein Sensor für einen Takt etwas länger als eine Sekunde benötigt. So habe ich zum Beispiel für 7 Sekunden keinen Wert erfasst.
Außerdem habe ich erhalte ich zu einigen Zeitpunkten (z.B.: 8, 10, 18 ) keinen numerischen Wert. Dieser soll einfach ignoriert werden.
Hier ein Beispielsatz:
Es soll also quasi folgendes gerechnet werden:
und im nächsten Schritt:
Das Ergebnis sollte dann als Spaltenvektor ausgegeben werden.
Gibt es für so eine Anwendung eine Funktion / Schleife oder ähnliches?
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 13.01.2018, 00:39
Titel:
|
|
Hallo,
am besten eine Matrix anlegen, in der jede Spalte einen zu mittelnden Zeitraum enthält (
reshape
). Dann
mean
mit Option 'omitnan' verwenden.
Grüße,
Harald
|
|
|
Mantequilla |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 10.01.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.01.2018, 11:40
Titel:
|
|
Für die Mittelwertbildung ist mean mit Option omitnan super.
Nur reshape hilft mir nicht weiter. Die neue Matrix hätte ja dann eine feste Spaltengröße. Die Mittelung nach Zeitinvervall wäre nicht mehr gegeben, da ich pro Mittelungszeitraum unterschiedlich viele Messwerte (zwischen 6 und 10) erhalte.
|
|
|
Avo |
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 04.12.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2016b
|
|
|
|
|
|
Verfasst am: 17.01.2018, 12:35
Titel:
|
|
Keine ahnung wie der Post hier zustande gekommen ist, bitte löschen.
Zuletzt bearbeitet von Avo am 17.01.2018, 12:37, insgesamt 2-mal bearbeitet
|
|
|
Avo |
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 04.12.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2016b
|
|
|
|
|
|
Verfasst am: 17.01.2018, 12:36
Titel:
|
|
Hallo.
Mantequilla hat Folgendes geschrieben: |
Die Mittelung nach Zeitinvervall wäre nicht mehr gegeben, da ich pro Mittelungszeitraum unterschiedlich viele Messwerte (zwischen 6 und 10) erhalte. |
Was hat die Mittelung nach Zeitintervall mit der Anzahl der Messwerte zu tun?
Vielleicht versteh ich da ja etwas falsch, aber wenn ich alle in einem Zeitintervall vorliegenden Messwerte mittle, erhalte ich immer einen vollwertigen Mittelwert für diesen Zeitintervall, unabhängig davon wie viele Messwerte tatsächlich vorliegen.
Das einzige was man da viellleicht sagen noch könnte, ist dass die Genauigkeit bei mehr Messpunkten in der Regel höher einzuschätzen ist, aber das ist dann nicht durch die Programmierung der Auswertung, sondern durch die Aufnahme der Messwerte begrenzt.
Vll. löst das hier dein Problem, geht aber sicher noch eleganter.
Besten Gruß,
Avo
|
|
|
Mantequilla |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 10.01.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.01.2018, 13:39
Titel:
|
|
|
|
|
Das Problem ist, dass mit reshape keine Aufteilung nach Zeitintervallen möglich ist. Mit reshape kann ich eine Matrix umformen. und im nächsten Schritt aus den jeweiligen Spalten dann Mittelwerte bilden.
Aber eine Spalte umfasst in dem Fall eine Anzahl von Messwerten und nicht ein bestimmtes Zeitintervall. Der Charakter einer Matrix lässt nicht zu, Spalten unterschiedlich lang sind.
Beispiel:
Die ersten vier Spalten sind meine Zeitwerte und die letzten Vier die Messwerte. Die ersten beiden Zeitintervalle funktioniert es. Im dritten Zeitintervall erhalte ich nur 8 Messwerte. So rutscht der erste Messwert des vierten Zeitintervalls in die Mittelwertbildung des dritten Zeitintervalls.
Oder habe ich mit reshape die Möglichkeit, zu sagen, dass Werte aus einem bestimmten Zeitraum abgefragt werden, und die restlichen Werte der Spalte nit NaN Werten gefüllt werden? Und die Werte für den nächsten Zeitintervall in der nächsten Spalte übertragen werden?
Viele Grüße
Michael
|
|
|
Avo |
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 04.12.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2016b
|
|
|
|
|
|
Verfasst am: 17.01.2018, 14:07
Titel:
|
|
Hallo,
da reshape den eigentlichen Inhalt nicht abfragt, denke ich nicht, dass man dein Problem ausschließlich mit dieser Funktion lösen kann.
Wenn du aber die Zeitlichen Lücken in deinen Daten mit NaN füllst, änderst du nichts an den Messwerten, kannst danach aber mit reshape weiterarbeiten:
Was sagst du zu meinem vorherigen Lösungsvorschlag?
Besten Gruß,
Avo
|
|
|
Mantequilla |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 10.01.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.01.2018, 17:35
Titel:
|
|
Das Script hat an meiner Matrix nichts geändert.
Auf mein Beispiel bezogen habe ich a=1, b=40 und data=TEST1 (die Matrix) eingesetzt.
Gruß
Michael
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 18.01.2018, 19:46
Titel:
|
|
Hallo,
eine Alternative könnten Timetables und die retime-Funktion dafür sein.
Ansonsten müsstest du für jedes Intervall bestimmen, welche Werte darin liegen, und diese eben mitteln.
Grüße,
Harald
|
|
|
Mantequilla |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 10.01.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.01.2018, 08:31
Titel:
|
|
Danke für die Hilfe, habs dann auch so in etwa gelöst. Ich suche in der ersten Spalte alle Zeilen, die sich in einem Zeitbereich befinden. Aus diesen Zeilen bilde ich denn aus der zweiten Spalte den Mittelwert. Dann schreibe ich ihn in eine nue Matrix (mit Zeit) und bereichne den nächsten Zeitbereich:
Danke für die Hilfe!
Gruß
Micahel
|
|
|
Avo |
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 04.12.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2016b
|
|
|
|
|
|
Verfasst am: 19.01.2018, 08:37
Titel:
|
|
Hallo,
hatte einen Fehler in meiner Rechnung:
In der mit Marker markierten Zeile wird die Reihe in deinen Daten gesucht, welche den gleichen Zeitpunkt wie newdata hat; minD ist 0 wenn es einen gibt, etwas anderes, wenn es keinen gibt; vorher hab ich ausversehen data-data gerechnet, sodass natürlich immer einer gefunden wird und sich nichts ändert.
Als Ausgangspunkt für die data, habe ich deine 'Rohdaten' gewählt, also die irgendwas mal 2 Matrix.
Nochmal zu Erklärung, was diese Schleife machen soll, ist dafür zu sorgen, dass keine 'Lücken' mehr in deinem Zeitverlauf sind, damit das vorherige Problem mit reshape nicht mehr besteht. So liegt dann quasi für jede Sekunde ein Messwert vor.
Allerdings, könnte man auch reshape komplett umgehen, wie ich in meinem ersten Post versucht habe... vielleicht schaust du dir den Code da nochmal an. Wenn du Fragen dazu hast, frag.
Besten Gruß,
Avo
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|