Messdaten auswerten

  • Messdaten auswerten

    Hallo!
    Mein kleiner Versuchsaufbau sammelt Messdaten (inkl. der jeweiligen Zeit), beispielsweise Temperatur, Windgeschwindigkeit, usw.
    Um diese aufzuzeichnen, benutze ich ein Lab View -System. Dieses gibt mir die Werte als iene von Tabulatoren getrennte Tabelle mit Headern aus. Diese Werte möchte ich vor allem in hochwertige Plots überführen und später dann auch direkt mit ihnen arbeiten (also Werte mitteln usw.)
    Im Moment mache ich das mit einer anderen Sprache, da Excel für alles, was mit mehr als einem Wert zu tun hat, absolut ungeeignet ist.
    Da alle meine Kollegen einen Mac benutzen (das ist selten, kommt aber vor), kann man das ja auch in Cocoa/Obj-C machen, die Plots von CorePlot gefallen mir soweit.
    Doch wie bekomme ich die Daten in Obj-C und wie verarbeite ich die dann weiter?

    Danke,
    Lateiner

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Lateiner ()

  • Hallo,

    sei mir nicht böse, ich muss erst ( aus dringender Notwendigkeit ) auf den ersten Punkt eingehen, warum du überhaupt vom py wechseln möchtest. Wenn deine Kollegen alle Mac OS benutzen, dann ist Python ja eh schon dabei. Die restlichen Dependencies kriegst du über easy_install i.d.r. ja auch installiert, von dem her verstehe ich diesen Zug nicht ganz, aber du wirst deine Gründe haben.

    Der zweite Punkt: Du bekommst die Daten in Obj-C und verarbeitest die dort weiter, in dem du die Daten einliest und dann weiterverarbeitest – Sollte bei der Aufgabe relativ überschaubar sein, wie viel Background bringst du mit und was hast du schon probiert?

    grüße
  • Nun, die ganzen benötigten Pakete sind nun mal nicht dabei, und easyinstall geht eben nicht (zumindest nicht bei mir, stets Fehlermeldung und Abbruch)
    ObjC liegt auch deshalb nahe, da ich mittelfristig plane, eine GUI einzuführen. Das geht mit Python, gelinde gesagt, mehr schlecht als recht.
    Ich hatte auch mal überlegt, die GUI mithilfe von Appcelerator zu schreiben, scheint mir das noch nicht so gut entwickelt und vor allem weiß ich dann ja auch nicht, wie ich die ganzen Pakete auf mein Zielsystem bekomme.
    Mein Background ist:
    diverse Basic-Dialekte: Sehr gut
    Java: Schulwissen
    Python: Fortgeschrittener Anfänger
    Objective-C: Einstieg in Objective-C und Cocoa gelesen, mehr dann aber auch nicht...

    Grundlagen wie Datentypen usw. sind mir bekannt, konkret interessiert mich, welche Klasse ich zB so anwenden muss, damit ich meine Werte "ready to plot" habe.

    Danke,
    Lateiner
  • Solche Fragen sind immer schwierig zu beantworten – einfach weil ich keinen Sinn erkennen kann dir jetzt zu erklären dass du mit NSString und NSArray schon weit kommst, indem du deine Eingabedatei in nen String liest, den dann nach Linebreaks aufbrichst und über den entstehenden Array iterierst und dir so die Daten rausziehst. Ich denke das sinnvollste für dich ist es, dich 2-5 Tage intensiv mit einem Cocoa-Buch zu beschäftigen, damit du auf jeden Fall die Basics trittsicher lernst. Ich bin überzeugt dass sich dann auch die restliche Fragestellung in Luft auflöst :)

    Hast du schon Literatur zum Thema zur Hand?
  • Meine gesamte Eingabedatei einlesen?
    Die Dateien sind im Moment Tabellen von 5x100.000 Einträgen... später werden es so um die 20x100.000.000 Einträge werden...
    In Python liest der mir immer nur eine Spalte raus...
    Aber gut, machbar ist es, da hast du recht ;) Kann ich dann auch rausfinden, wenn ein EOL ist, also wann die Zeile zu Ende ist?
  • Mhh, liege ich mit 100.000.000 * 20 * 8(double) ca 16 GByte richtig?
    Dann wird es aufwändiger diese Mengen zu beherrschen.

    Werden diese Datenmengen benötigt um einen Plot zu erzeugen oder erst wenn man in einen Bereich hinein zoomt?

    Müssen alle Werte im Speicher gehalten werden oder kann das File geparsed werden und somit nur Werte mit signifikanter Änderung CorePlot hinzugefügt werden?

    Evt. ist es sinnvoll eine "niedrig aufgelöste" lvm Datei aus der vollständigen lvm Datei zu erzeugen.

    Viele Grüsse
    Jürgen
  • Nun, es müssen eben nicht alle Datenmassen "übereinander" gelegt werden, das ist ja der Witz dabei... ich kann aber auch mein Programm anweisen, nur kleinere Dateien zu schreiben, maximal 1Gb zB.
    Aber ich brauch aber auhc nicht immer alle Spalten, sondern meist nur maximal 3, also 16GB werde ich wahrscheinlich nicht benötigen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Lateiner ()

  • 1. Ich würde bei der python Lösung bleiben, Motto: Never change a running system
    2. Versuch mit py2app ein binary zu erzeugen, ich fand das für mein Projekt damals ziemlich einfach (und in python bin ich alles andere als fit)
    oder 3. Installier Python und die benötigten Libs aus macports. Mindestens numpy und matplotlib sind drin.

    Zur Gui: man kann in python sehr wohl feine GUIs erstellen, pyqt ist recht schön zu benutzen und wxpython macht auch einen guten Eindruck. Lediglich mit tkinter konnte ich mich bis heute nicht anfreunden.

    KG
  • Nun, ich bleibe ja für's erste auch bei Python, da ich im Moment noch keine andere Lösung habe. Ich will jedoch langfristig auf Objective-C umsteigen, da ich a) diese Sprache schon seit langem einmal lernen wollte und b) es gern als Binary verteilen will.
    Letzteres will ich, da ich ein paar Formeln ausgetüftelt habe, bei denen ich verhindern will, dass sie gleich alle schön lesbar im Python-Quelltext präsentiert bekommen. Und Py2App hat mich nicht überzeugt, nach ein paar Stunden testen...
  • Lateiner schrieb:

    Binär kodieren? Mapped Data? Entschuldigung, aber davon habe ich noch nichts gehört...

    initWithContentsOfMappedFile:

    Binär heißt, dass du die Zahlen nicht menschenlesbar, sondern bereits als Binärzahlen ausgeben lässt oder sie so erzeugst. Der Vorteil liegt darin, dass du die Position einer Zahl auf ihrem Index errechnen kannst. Bei menschenlesbaren Zahlen hast du ja häufig eine unterschiedliche Länge.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Aaaalso, nochmal von vorn:

    Mein kleines Helferlein soll in Obj-C geschrieben werden. Warum?
    a.) Python ist langweilig. Es funktioniert alles schon.
    b.) mir ist langweilig.
    c.) Ich möchte es als Binary haben.
    d.) Die Geschwindigkeit von Python lässt zu wünschen übrig
    e.) Ich wollte Obj-C schon immer lernen und hoffe nun, anhand eines Projektes praxisorientiert und vor allem noch sinnvoll diese Sprache zu lernen.

    Mein Programm soll primär die folgenden Schritte abarbeiten:
    1.) Irgendwie den Dateinamen über eine GUI (geht aber auch über Konsole, aber mittelfristig GUI) in mein Programm rein bekommen
    2.) Den Header überspringen
    3.) Die Werte einlesen
    4.) Die Werte plotten und
    5.) In eine Vektordatei speichern.

    Das ist das, was meine Python-App auch schon kann, ein Python-Einzeiler wird doch auch in Obj-C nicht wesentlich umfangreicher werden...

    Meine Lage ist im Moment folgende:
    Ich habe ein funktionierendes (Python-)Programm, welches es mir ermöglicht, meine Arbeit fortzuführen. Die Software muss also nicht von heute auf morgen funktionieren, sondern ich kann das mit etwas Zeit angehen lassen.
    Wenn man mal Lernressourcen zu Obj-C zusammenträgt, füllt man damit gut und gern allein damit ein Buch, und ich weiß wirklich nicht, wo ich anfangen soll.
    Das Buch "Einstieg in Objective-C 2.0 und Cocoa inkl. iPhone-Programmierung mit dem SDK 3.0" befindet sich in meinem Besitz, jedoch habe ich mich bis heute nicht dazu durchringen können, es systematisch durchzuarbeiten, mir fehlt da irgendwie der Anreiz.
    Also liegt es nahe, so mit dem Lernen anzufangen, wie ich schon meine ganzen vorigen Sprachen gelernt habe: Indem ich mir ein mittelgroßes Projekt vornehme und mich mithilfe von Foren, Büchern, Websites und Experten durchbeiße. Dann kennt man schon einmal die Materie und weiß dann beim nächsten Mal, wie man anfängt und kann sich den größten Teil selbst erarbeiten.

    Könnt ihr mir ein Stück weit helfen bei meinem Projekt?
  • Das Problem ist, wenn ich das richtig gelesen habe, dass Du bisher noch überhaupt keinen Kontakt zu einer Programmiersprache hattest wo Du Dir Gedanken über Speichermanagement machen musstest. Um das zu lernen wirst du aber nicht darum kommen erstmal die BAsics aus dem Buch durchzuarbeiten. Gerade bei dem was Du da vorhast, hast du ja keine Chance wenn Deine Software Speicher frisst. Bei 90% der Apps die im Appstore sind ist das egal. Die brauchen ja nicht viel Speicher. Deshalb fällt das da nicht auf, dass meiner Schätzung nach 30% mindestens nicht korrekt mit dem Speicher umgehen. Aber bei einer App die mit 16GB großen Dateien werkelt sollte das Speichermanagement schon passen sonst hast du sehr schnell ein Problem.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)