www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik sehr große Datenmengen


Autor: Großes Fragezeichen (112)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Alfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :-)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Kevin K. (nemon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Freddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-> 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/  ]]

Autor: J.-u. G. (juwe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Erich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha, die Fortsetzung des Problems
> Beitrag "Leistungsmessung"

Ich würde immer noch einen simplen Energiezähler verwenden anstatt 
kompliziert 36 Mio. Messwerte (!) aufzunehmen...

Gruss

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.