LabVIEWForum.de - Messwerte aus txt-Datei einlesen

LabVIEWForum.de

Normale Version: Messwerte aus txt-Datei einlesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo alle zusammen. Mein erstes Posting Rolleyes
Ich habe jetzt im Rahmen meines Elektrotechnik-Studiums mit LabVIEW zu tun. Das klappt auch alles so weit recht gut.
Jetzt bin ich aber auf ein Problem gestoßen, bei dem ich nicht so recht weiter weiß.

Und zwar muss ich eine txt-Datei einlesen, in der sich Messwerte befinden. Die Datei habe ich zum besseren Verständnis als Anhang angefügt.
Ich möchte die Datei Zeile für Zeile von Anfang bis Ende durchgehen und die jeweils auf einer jeden Zeile stehenden Werte separat in drei 1-D-Arrays einlesen.
Leider ist mein LabVIEW-Latein an diesem Punkt zu Ende, sodass ich hoffe, hier in diesem Forum Hilfe zu finden.
Wäre echt klasse, wenn mir einer helfen könnte.
Schonmal danke im Voraus

Martin
' schrieb:Hallo alle zusammen. Mein erstes Posting Rolleyes
Ich habe jetzt im Rahmen meines Elektrotechnik-Studiums mit LabVIEW zu tun. Das klappt auch alles so weit recht gut.
Jetzt bin ich aber auf ein Problem gestoßen, bei dem ich nicht so recht weiter weiß.

Und zwar muss ich eine txt-Datei einlesen, in der sich Messwerte befinden. Die Datei habe ich zum besseren Verständnis als Anhang angefügt.
Ich möchte die Datei Zeile für Zeile von Anfang bis Ende durchgehen und die jeweils auf einer jeden Zeile stehenden Werte separat in drei 1-D-Arrays einlesen.
Leider ist mein LabVIEW-Latein an diesem Punkt zu Ende, sodass ich hoffe, hier in diesem Forum Hilfe zu finden.
Wäre echt klasse, wenn mir einer helfen könnte.
Schonmal danke im Voraus

Martin

Erstmal herzlich willkommen hier im LVF!


Mein Beitrag zu einem ähnlichem Problem

Allerdings könnte der letzte Wert in der ersten Zeile Deiner Dateien ein paar Probleme machen (meine das -------). Kann/Darf man das 0 setzen ?

Hoffe das hilft Dir weiter,
Gruß, Rob

PS: auch ET-ler ;-)
Ebenfalls Herzlich Willkommen!
Ja, wenn es sich bei Deiner Datei um einen sog. "Tabellenstring" handeln würde, dann wäre die Sache ganz einfach, dafür gibt es die Funktion "Aus Tabellenkalkulationsdatei lesen". Wenn möglich, würde ich an Deiner Stelle versuchen, das Format entsprechend abzuändern, und zwar so: Statt unterschiedlicher Anzahl Leerzeichen (oder neben diese Leerzeichen) sollen Trennzeichen zwischen die Zahlen einer Zeile, z.B. Tabs (default) oder Kommas oder Semikolon. (Ja, auch ein Leerzeichen wären als Trennzeichen möglich, aber wenn, dann dürfte es nur eines zwischen jeder Zahl sein)

Es macht aber nichts, so wandle ich Deine Datei eben erst einmal um - Nachteil nur, daß Du es schwer haben wirst diesen Schritt zu verstehen (es geht darum, daß nicht jedes einzelne Leerzeichen in ein TAB gewandelt wird. Das + im Suchstring ist ein Spezialzeichen und bedeutet, daß das (Im Suchstring nicht sichtbare vorangestellte Leerzeichen) gehäuft vorkommen darf).

Wenn Du die Dimension (oder ist es das Zeichen für milli?) in der zweiten Spalte retten willst, so ist das möglich, aber dann wird es wieder etwas komplizierter.

Ludwig
Hallo Lucki,
genau so habe ich mir das vorgestellt. Durch die Angabe %10.3f habe ich es sogar noch hinbekommen, die Nachkommastellen zu erfassen.
Eine Frage habe ich jedoch noch, denn deine Vermutung bewahrheitet sich. Das kleine "m" steht für Milli und muss erhalten bleiben. Ich habe jetzt auch schon dein VI erweitert, sodass das Leerzeichen zwischen der Zahl und dem "m" verschwindet, nur leider wird es eben noch nicht mit eingelesen. Wenn du dafür noch eine Lösung hättest, wäre das klasse.

Martin
' schrieb:Wenn du dafür noch eine Lösung hättest, wäre das klasse.
1. Das Leerzeichen muß weg, wie Du schon sagtest
2. Das richtige Fomatzeichen muß dann heißen %p (anstatt %f)

PS: Ein Formatangabe wie %10.3f hat meines Wissens nur Bedeutung bei der Formatierung von Zahl nach String, aber nicht umgekehrt. Wenn Du eine Zahl so formatieren willst, dann mit der rechten Maustaste auf die Anzeige --> Format und Genauigkeit. Die Zahl wird aber dann auch nicht gerundet, das betrifft nur die Anzeige, die interne Representation z.B als double bleibt davon unberührt. Wenn Du wirklich eine Zahl (und nicht die Stringdarstellung einer Zahl) z.B auf drei Stellen nach dem Koma runden willst, dann geht das mathematisch und nicht mit Formatierung: Die Zahl mal 1000 nehmen, auf ganze Zahl runden, dann wieder durch 1000 dividieren. Oder so: Die Zahl mit Formatierungszeichen in einen String umwandeln, dann wieder rückkonvertieren.
Hallo Lucki,

was macht denn das " +" und das "t" beim ersten Search and Replace String? Macht das die Leerzeichen weg? "+" habe ich nämlich keins gesehen zum Ersetzen.

Gruß Markus

' schrieb:1. Das Leerzeichen muß weg, wie Du schon sagtest
2. Das richtige Fomatzeichen muß dann heißen %p (anstatt %f)

PS: Ein Formatangabe wie %10.3f hat meines Wissens nur Bedeutung bei der Formatierung von Zahl nach String, aber nicht umgekehrt. Wenn Du eine Zahl so formatieren willst, dann mit der rechten Maustaste auf die Anzeige --> Format und Genauigkeit. Die Zahl wird aber dann auch nicht gerundet, das betrifft nur die Anzeige, die interne Representation z.B als double bleibt davon unberührt. Wenn Du wirklich eine Zahl (und nicht die Stringdarstellung einer Zahl) z.B auf drei Stellen nach dem Koma runden willst, dann geht das mathematisch und nicht mit Formatierung: Die Zahl mal 1000 nehmen, auf ganze Zahl runden, dann wieder durch 1000 dividieren. Oder so: Die Zahl mit Formatierungszeichen in einen String umwandeln, dann wieder rückkonvertieren.
Hallo Markus, genau das macht es. Es entfernt ein oder mehrere hintereinander stehende Leerzeichen und ersetzt diese durch ein tab-Zeichen.
Auch dir Lucki nochmals vielen Dank. Das VI funktioniert echt so, wie ich es mir vorgestellt habe.
Es leben die Forums im Internet Rolleyes Bisher haben sie mir nur bei LaTeX geholfen und nun auch noch bei LabVIEW...
Also dann, bis zu einer meiner vielleicht bald kommenden Fragen.

Martin
Achso, dann ist das "+" quasi ein Platzhalter, der hintereinanderkommende gleiche Zeichen zusammenfasst? Würde dann "d+ alle "d" hintereinander zusammenfassen und dann durch ein Tabulator (t) ersetzen?

Gruß Markus

EDIT: Juhu, das war mein 700. Beitrag. Lol

' schrieb:Hallo Markus, genau das macht es. Es entfernt ein oder mehrere hintereinander stehende Leerzeichen und ersetzt diese durch ein tab-Zeichen.
Auch dir Lucki nochmals vielen Dank. Das VI funktioniert echt so, wie ich es mir vorgestellt habe.
Es leben die Forums im Internet Rolleyes Bisher haben sie mir nur bei LaTeX geholfen und nun auch noch bei LabVIEW...
Also dann, bis zu einer meiner vielleicht bald kommenden Fragen.

Martin
' schrieb:Achso, dann ist das "+" quasi ein Platzhalter, der hintereinanderkommende gleiche Zeichen zusammenfasst? Würde dann "d+ alle "d" hintereinander zusammenfassen und dann durch ein Tabulator (t) ersetzen?
Gruß Markus
EDIT: Juhu, das war mein 700. Beitrag. Lol
Ja, das Ganze findet man, wenn man die Hilfe zu den betreffenden VIs aufruft und von dort aus "fortgeschrittener regulärer Ausdruck" anklickt. Das ist aber a) so kompliziert, dass ich auch nicht alles verstehe, und b) ist das Fatale an der Sache, dass die Deutung gewisser Zeichen als Sonderzeichen Standard ist. Wenn man das nicht weiß - und so ist es mir und anderen hier im Forum gegangen (und woher sollte man das wissen?) -, dann wundert man sich, dass ein Suchausdruck anders funktioniert als erwartet und sucht stundenlang, woran das liegen könnte. Gottseidank habe ich das hinter mir.

Hier ging es aber nicht darum, wie man die unerwünschte Interpretation als Sonderzeichen vermeidet, sondern wie man sie anwendet.
Die Aufgabe war: Zwischen den Daten einer Zeile steht eine unterschiedliche Anzahl von Leerzeichen als Trennzeichen. Ein Leerzeichen kann zwar durchaus als Trennzeichen dienen, aber wenn es mehrere sind, dann ist das schlecht. Gleichzeitig hat man noch ein anderes Problem: Eine Zahlenstring hat "m" für "milli" angehängt, und zwischen Zahl und m ist ein Leerzeichen. Dieses Leerzeichen soll natürlich nicht in einen Tab verwandelt werden, um Gegenteil, es soll weg.
Mir ist keine Lösung eingefallen, wie man das in einem Schritt machen könnte, deshalb wird "suchen und ersetzen" zweimal ausgeführt:
1. Schritt: Suchen nach "Leerzeichen Leerzeichen +" --> ersetzen durch Tab. Das heißt, es müssen mindesten 2 Leerzeichen aufeinanderfolgen, ein einzelnes Leerzeichen erfüllt nicht die Bedingung des Ausdrucks und wird nicht ersetzt.
1. Schritt: Es ist nur das Leerzeichen vor dem "m" übrig geblieben, das wird entfernt.

Zum 700. Beitrag meine herzlichen Glückwunsch!

Ludwig
Hi.

Das ist ja tricky. ;)Mir ging es auch mal so (anderes Thema hier), dass ich was gesucht, aber nicht gefunden habe. Da habe ich nach 9,9E+37 gesucht und da war auch das "doofe" Plus das Problem.
Das nächste Mal weiß ich das jetzt (hoffentlich) auch.
Danke für die ausführliche Info.

Gruß Markus
Seiten: 1 2
Referenz-URLs