LabVIEWForum.de
String lesen, nach vorgaben löschen und in Array schreiben - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: String lesen, nach vorgaben löschen und in Array schreiben (/Thread-String-lesen-nach-vorgaben-loeschen-und-in-Array-schreiben)



String lesen, nach vorgaben löschen und in Array schreiben - nova.08 - 17.09.2014 15:32

Hallo,

und zwar habe ich folgendes Problem:

ich habe eine Datei in die ca. 30 Kalibrierfunktionen von Hand eingetragen werden. (Bsp.: 10+20*x-30*x^2+500*x^5) Ob diese Funktionen mit Klammern oder ohne eingegeben werden ist dabei egal (Sprich: 10+20*x-30*x^2*500*x^5 = 10+20*(x)-30*(x^2)+500*(x^5) ). Ich lese die Datei in Labview ein und muss nun alle Funktionen nacheinander durchsuchen und die Zeichen so löschen, dass ich lediglich meine Vorfaktoren übrig habe.
Heißt: 10 + 20*x - 30*x^2 + 500*x^5 entspricht der Grundform: A + B*x + C*x^2 + D*x^3 ... soll danach nurnoch A B C D ... sein.

Diese Faktoren will ich dann in ein Array schreiben. Am Ende soll es ein Array sein mit ca. 30 Zeilen und 15 Spalten (A bis O).
Dieses Array will ich weiter an einen Formelknoten geben der nur die Formel y = A + B*x + C*x^2 ... enthält. Die Eingänge des Formelknoten sollen dabei logischerweise die Einträge des Arrays (A bis O) sein. Der Ausgang nur y, dieser wird dann wieder in eine Datei geschrieben.

Wie ich ein Array aufspalte und mit den einzelenen Einträgen dann auf den Formelknoten gehe bekomme ich hin. Ich schaff es nur nicht aus den Funktionen die Faktoren rauszuziehen bzw. alles andere außer die Faktoren zu löschen und bräuchte hier bitte eure Hilfe.

Ich nutze: Labview 2009
http://www.labviewforum.de/images/smilies/lvfsmilies/lv_icons/lv09_img2.jpg

Beste Grüße und schonmal vielen Dank!!!


RE: String lesen, nach vorgaben löschen und in Array schreiben - GerdW - 17.09.2014 15:51

Hallo Nova,

Zitat:(Bsp.: 10+20*x-30*x^2+500*x^5) Ob diese Funktionen mit Klammern oder ohne eingegeben werden ist dabei egal (Sprich: 10+20*x-30*x^2*500*x^5 = 10+20*(x)-30*(x^2)+500*(x^5) ).
- Wenn hier die einfachen Punkt-vor-Strich-Regeln gelten (in den Klammern stehen keine weiteren +-*/-Terme, oder anders: du hast reine Polynomformeln der Art summe[a_i * x^i] ), dann kannst du die Klammern einfach weglöschen.
- Dann musst du die Terme an den "+-"-Zeichen trennen
- die einzelnen Terme dann daraufhin untersuchen, ob ein "x" enthalten ist und falls ja, ob eine Potenz nach dem "^" angegeben ist

Zitat:Am Ende soll es ein Array sein mit ca. 30 Zeilen und 15 Spalten (A bis O).
Dieses Array will ich weiter an einen Formelknoten geben der nur die Formel y = A + B*x + C*x^2 ... enthält. Die Eingänge des Formelknoten sollen dabei logischerweise die Einträge des Arrays (A bis O) sein.
Und hier bekomme ich spontanes Kopfschütteln…

Warum wendest du nicht einfach die Polynomberechnung auf deine Polynomparameter und "x" an? Wozu eine FormulaNode mit >10 Inputs?

Oder noch ein anderer Ansatz: es gibt Funktionen zum Formelparsen


RE: String lesen, nach vorgaben löschen und in Array schreiben - nova.08 - 17.09.2014 16:13

Wie genau ich das dann mit der Berechnung mache ist noch variabel und das mit der Polynomberechnung sieht nach einer guten Methode aus! Vielen Dank schonmal dafür.

Zitat:- Dann musst du die Terme an den "+-"-Zeichen trennen
Leider fängt es hier schon an, dass ich nicht weiß welche Funktion dafür am besten ist. Ich hab die ganze Zeit mit Replace Substring rumversucht aber das brachte keinen Erfolg...

Zitat:- die einzelnen Terme dann daraufhin untersuchen, ob ein "x" enthalten ist und falls ja, ob eine Potenz nach dem "^" angegeben ist
Besteht auch die möglichkeit alles ab dem "*" Zeichen kommt bis zum nächsten Trennzeichen (Leertaste, Tab o.ä.) zu löschen? Dann bleibt nurnoch +- und meine Faktoren übrig.


RE: String lesen, nach vorgaben löschen und in Array schreiben - GerdW - 17.09.2014 17:07

Hallo Nova,

Zitat:Ich hab die ganze Zeit mit Replace Substring rumversucht aber das brachte keinen Erfolg...
Du willst einen String in Teile zerlegen, verwendest aber eine Funktion zum Ersetzen von Zeichen?
Das verstehe ich nicht… Hmm

Zitat:Besteht auch die möglichkeit alles ab dem "*" Zeichen kommt bis zum nächsten Trennzeichen (Leertaste, Tab o.ä.) zu löschen? Dann bleibt nurnoch +- und meine Faktoren übrig.
Dann sind deine Potenzen aber auch weg. Und ohne diese wirst du die Faktoren nicht korrekt zuordnen können…
Aber ja, die Möglichkiet besteht immer. Man muss sie nur programmieren!

Hast du dich schon mal mit Dingen wie PAPs oder Nassi-Shneiderman beschäftigt? Ist für solche Aufgaben wirklich hilfreich…


RE: String lesen, nach vorgaben löschen und in Array schreiben - jg - 17.09.2014 21:30

Schon mal hier:
[attachment=50781]
bzw. hier:
[attachment=50782]
geschaut?

Gruß, Jens


RE: String lesen, nach vorgaben löschen und in Array schreiben - nova.08 - 18.09.2014 13:28

Hallo,

wie gebe ich bei der Search/Split String Function am Anschluss "search string/char (-)" ein, dass er mir nach "+" und "-" teilen soll? ich komm mit dem Syntax nicht so richtig klar.


RE: String lesen, nach vorgaben löschen und in Array schreiben - GerdW - 18.09.2014 13:31

Hallo nova,

mal einfach ein kleines Test-VI zusammenklicken schaffst du nicht?
Hmm

[attachment=50798]
Gleich noch mit einer anderen Funktion…

Und wenn die Hilfe zur Funktion schreibt:
Zitat:Nach String/Zeichen suchen ist der String, in dem nach dem String oder Zeichen gesucht werden soll
dann ist das doch eigentlich SEHR eindeutig…