LabVIEWForum.de - MathScript Funktionen in Formeln für fits benutzen

LabVIEWForum.de

Normale Version: MathScript Funktionen in Formeln für fits benutzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hiho,

ich habe vor, eine sharp-edge-messung (durchmesser eines laserstrahls) mit einer error-funktion anfitten zu lassen, um gleich nach der messung den strahldurchmesser angezeigt zu bekommen..
nun bastele ich gerade am fit, aber ich krieg es einfach nicht hin, dass er die error-funktion in der fit-formel benutzt...

ich nehme dafür das "curve fitting" express VI, stelle es in den eigenschaften auf non-linear und kann unter "non-linear model" die formel angeben..
das problem ist, dass er eingaben wie erf(x) o.ä. nicht akzeptiert.. die funktion ist beim mathscript paket dabei und ich kann sie z.b. als baustein problemlos benutzen (mathematics -> elementary & special -> error functions) - aber eben nicht als ausdruck in der fit-formel...

leider ist die funktion über ein integral definiert, d.h. ich kann sie auch nicht durch etwas anderes darstellen und polynomiale näherungen sind ziemlich schlecht..

also die frage an die profis: wie kann ich "kompliziertere" funktionen in eine fit-formel einbinden, am besten mit dem curve fitting express VI?
die formel-eingabe an sich ist leider so gut wie nicht dokumentiert, vor allem was syntax und unterstützte funktionen betrifft..
Hallo,

schau Dir doch mal meinen letzten thread an.
http://www.LabVIEWforum.de/index.php?showt...amp;#entry59847

Das letzte vi kann mit "komplizierten" Funktionen fitten. Ist zwar kein Express vi...
Ob Du da in der Funktion auch mit Integralen arbeiten kannst, kann ich Dir jetzt so nicht sagen,
mußt mal schauen.

Schönen Gruß

Peter
hi,

das vi lässt sich mit LabVIEW 8.0 nicht öffnen, könntest du es vielleicht konvertieren?
nimmst du da die nonlinear curve fit vi oder hast du den ganzen fit-algorithmus selber geschrieben? der formel-parser der besagten vi ist der gleiche wie bei der express-vi, d.h. ich kriege da auch einen fehler, wenn erf(...) drin steht...

ich hab mir mal genauer angeschaut, was die "einfacheren" fits (gauß etc.) machen - die greifen alle auf die lvanlys.dll zu.. nun gibt es in dieser dll tatsächlich auch die funktion LV_Erf (natürlich in keinster weise dokumentiert), aber ich kann die nicht "einbauen", d.h. ich bin auf die vorgegebenen parameter beschränkt.. ich versuche erstmal damit was zu basteln, aber mir fehlt da vor allem der y-offset als parameter.. hier ist die fit-funktion:

y=A*(1+erf((x-x0)*1.6651/fwhm))/2+C

gibts sonst noch eine gute idee? vielleicht "extern" fitten lassen, z.b. über origin? ich hab aber keine ahnung wie das gehtWink
HAllo.

hie in 8.0
Also zur erf-Funktion kann ich nix sagen, höre das heute zum ersten Mal. Wenn Origin dieses feauture hat, sollte es aber damit gehen. Origin selbst stellt vis zur Kommunikation mit LAbview zur Verfügung (ab 7.5 !?) und hat ja selbst einen LV-Browser.
Vielleicht versuchst Du es mal unter Origin; die Einbindung in LV sollte dann schon irgendwie hinzubekommen sein.

Schöne Grüße

Peter

Lv80_img[attachment=15094]
' schrieb:also die frage an die profis: wie kann ich "kompliziertere" funktionen in eine fit-formel einbinden, am besten mit dem curve fitting express VI?
die formel-eingabe an sich ist leider so gut wie nicht dokumentiert, vor allem was syntax und unterstützte funktionen betrifft..

Es geht mit mit dem VI "Nichtlineare Kuvenanpssung", und davon gibt es zwei Instanzen:
1.) Formeleingabe über Formelstring
2.) Formelberechnung mit Sub-VI.

Wenn sich also die Formel nicht explizit als Formelstring darstellen läßt, dann muß Du eben die andere Instanz wählen, und dort sind der Funktions-Darstellung (Z.B. mit Iterationen) überhaupt keine Grenzen gesetzt.
Mit der Suche nach Hilfe über den Formelsrtring habe ich mich auch schon schwer getan, erfolgreich waren dann die Suchworte MathScript --> Syntax.
' schrieb:Wenn sich also die Formel nicht explizit als Formelstring darstellen läßt, dann muß Du eben die andere Instanz wählen, und dort sind der Funktions-Darstellung (Z.B. mit Iterationen) überhaupt keine Grenzen gesetzt.

aah, so läuft das! sehr schön, jetzt muss ich nur noch rausfinden, welche konvention die formel-VI erfüllen muss und dann haben wirs fastBig Grin
so, ich habs endlich geschafft! danke für die tipps..

es gibt eine art template fürs model-VI und ein paar beispiele, damit geht das ganz gut..

wer's nachmachen will: im anhang ist die model-VI für die error-funktion sowie ein testprogramm, das den fit macht.. es wird eine (verrauschte) error-funktion generiert und ein fit durchgelegt..

achja, 8.0 versionen..
Toll, wie Du das gemacht hast, ein LV-Newbie bist Du jedenfalls nicht. Ich selbst hatte das Fitten mit Sub-VI-Funktionen noch nicht gemacht, mich in meiner Antwort wie es funktionieren müsste aber erdreistet, als gesichertes Wissen auszugeben, was in Wirklichkeit nur eine Vermutung war. Um so mehr freut man sich über die positive Rückmeldung.
heheWink- die richtige idee muss man nur haben..

die anwendung des fittens mit model-vi hab ich größtenteils aus dem beispiel übernommen (zumindest in LV 8.0: template unter ..vi.libgmathNumericalOptimizationLM model function and gradient.vit; beispiele unter ..examplesmathcurvefit.llb).. mich hats am anfang etwas verwirrt, dass es im model-vi den "data" input und den gradienten (f'(x)) output gibt.. kann man aber offenbar getrost ignorieren und leer lassen..
Referenz-URLs