Hallo allerseits, ich habe folgendes Problem: Ich nehme eine sehr serh große Menge Daten über einen sehr langen Zeitraum auf. Dabei handelt es sich um Leistungsdaten. Nun möchte ich den Gesamtverbrauch nach einer Messzeit von z.B. 60 Minuten ermitteln. Es werden pro Sekunde 10k Werte aufgenommen. Nach einer Stunde sind also bereits 36 Millionen Werte vorhanden... und ggf. soll der Testlauf einen Tag oder länger dauern. Die Gesamtleistung erhalte ich durch schlichte Addition der gesamten Werte... Problem ist nur die unglaubblich hohe Datenmenge... Excel kann nur 65.000 Stück, ab Version 2007 nur 1,3Millionen Werte verarbeiten. Welche Alternativen Möglichkeiten habe ich diese Megnen an Daten zu addieren? macht Matlab dies mit oder meckert es, wenn ich dort einen 1x1G Vektor reingebe und von diesem den Betrag ermittel? Achja... die daten liegen in einem Textfile vor.
Hallo, Du könntest die Daten in ein RDBMS einlesen und dann die Datenbank rechnen lassen. Wenn Du einer Scriptsprache (Perl, Ruby, Python o.ä.) mächtig bist, lässt sich das in einer Stunde realisieren. Beste Grüße Alfred
Großes Fragezeichen schrieb: > macht Matlab dies mit oder meckert es, wenn ich dort einen 1x1G Vektor > reingebe und von diesem den Betrag ermittel? Test es aus. Ansonsten vielleicht noch was selbstgeschriebenes :-)
Du willst also nur alle Werte addieren? Dann könntest Du Dir in einer beliebigen Programmiersprache folgenden hochkomplexen Algorithmus zusammenbasteln: summe = 0 öffne datei für jede zeile in datei bestimme wert in zeile summe = summe + wert schließe datei summe ausgeben Alternativ könnte man darüber nachdenken, ob nicht eventuell das Ding, das die Werte liefert, auch die Summierung übernehmen könnte. Statt 10kWerte pro Sekunde in eine Datei zu schreiben, dürfte es erheblich einfacher sein, diese Werte einfach nur zu addieren und die Summe in eine Datei zu schreiben.
Matlab kann das, solange dein PC genügend Speicher hat (64Bit ggf. benötigt). Evtl. kannst du die Daten ja schon eher komprimieren, indem du 10k Werte aufaddierst und nur jede Sekunde speicherst.
-> DIADEM !? alternativ: schon mal über sinnvolles (Mess-)Datenmanagement nachgedacht ? (10000 Werte/s ist schon verdammt viel !) Aber DIADEM kann das [[ http://www.ni.com/diadem/d/ ]]
Großes Fragezeichen schrieb: > Achja... die daten liegen in einem Textfile vor. Immer nur eine Wert pro Rechenschritt einlesen und zum bisherigen Ergebnis addieren. Abgesehen davon klingt es für mich unplausibel 10k Werte pro Sekunde zu benötigen, um den Verbrauch nach 60min zu ermitteln. Mit Mikrocontrollern hat das Ganze auch nicht viel zu tun.
Ich würde an deiner Stelle auch beim Messen schon addieren. Spart auch Platz bzw. Man kann die Werte addieren und jede Minute oder so über USB an den PC senden (oder halt auf einer SD-Karte speichern). Allerdings frag ich mich auch, wozu du eine Stunde (oder später dann länger) jede 100µs ein Wert brauchst. Würde mich mal interessieren. Manchmal kann man auch an einer anderen Stelle helfen/Probleme lösen.
also bei solch großen datenmengen halte ich es für sinnvoll bestimmte oft benutzte werte in echtzeit zu erzeugen und zusätzlich in der datenbank zu speichern, obwohl man sie jederzeit aus den bereits vorhandenen daten berechnen könnte. z.b. durchschnittswerte für jede minute oder 30 sekunden sind recht einfach zu handhaben und damit kriegst du eine schnellen überblick ohne großes rechnen hin. wenn du einen bestimmten bereich dann genauer willst kannst du die "fraglichen minuten" aus der datenbank genauer auflösen. das sind dann wieder überschaubare datenmengen und geht bei bedarf sehr schnell.
Aha, die Fortsetzung des Problems
> Beitrag "Leistungsmessung"
Ich würde immer noch einen simplen Energiezähler verwenden anstatt
kompliziert 36 Mio. Messwerte (!) aufzunehmen...
Gruss
Moin bei der summe an zahlen, die da addiert werden sollen, spielen zumindest der zahlenbereich eine rolle, und ggf additionsverfahren wenn es dan flote werden sollte (supbtraktionskatastrophe). ggf im controller die zahlen schon aufsummieren und in einer sepparaten datei ablegen. ggf noch ein paar statistik daten wie min / max oder ähnliches.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.