Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
04.10.2012, 13:41 (Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2012 19:39 von jg.)
wir haben folgendes Problem beim Fitten unserer Messwerte: Wir nehmen einen Array bestimmter Größe unserer Messwerte und wollen diese exponentiell fitten, um die Zeitkonstante Tau unserers Signals zu bestimmen. Wählen wir das Array zu lang (ca 2000 Werte), bekommen wir einen extrem schlechten Fit. Nehmen wir ein kürzeres Array (immer noch ca. 500 Werte) erhalten wir gar keinen Fit mehr und somit auch keine Zeitkonstante. Programm und Daten sind im Anhang.
Weiterhin haben wir unser Exponentialsignal logarithmiert und versucht es anschließend linear zu fitten. Auch das funktioniert nicht, es erscheint einfach kein Fit.
Hoffentlich kann uns jemand helfen,
vielen Dank im Voraus, mfg KoeKri.
Da die Datei zu groß war um sie im Forum anzuhängen, hier ein externen Downloadlink:
Für Exponentialanpassung gibt es das VI "Exponentialanpassung" unter Mathematik/Anpassung. Bei flüchtiger Durchsicht Deines VI finde ich die Funktion nicht, ich sehe überhaupt nur Datenerfassung und - speicherung. Handelt es sich vielleicht um das falsche VI? Der Download der lvm ist mir zu gefährlich, da wird doch wohl noch mehr downgeladen und installiert als nur diese Datei.
04.10.2012, 19:41 (Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2012 19:46 von BNT.)
Hi
Wenn Du einen sinnvollen Wertebereich in X auswählst, erhälst Du auch einen perfekten Fit, mit den Rohdaten und Exponentialfit und logarithmierten Daten mit linearem Fit, siehe angehängtes VI.
Die Y-Werte nehmen negative Werte an, welche zwar durch den Offset beim Exponentialfit berüchtigt werden, aber beim logarithmieren der Rohdaten für den linearen Fit Probleme bereiten.
Noch viel problematischer sind aber die fast konstanten Y-Werte bei kleinen X-Werten.
Wenn eine Datei (vor allem eine txt-Datei) zu groß ist, dann gibt es zum Glück Komprimierungsprogramme. Dein Link zur lvm-Datei wurde durch ein zip-File ersetzt. 2,5 MB anstatt 18 MB.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Holger hat ja schon vorgearbeitet, aber was seinem Vi komischerweise fehlt, ist das Endergebnis, um dass es ja geht: die Zeitkonstante.
Habe das hier noch gemacht:
Amerkung zu den negativen Werten: Das könnte in der Exponentialfunktion einen negativen Offset bedeuten. Wenn man aber auf eine reine Exponentialfunktion
Y = Y0*exp(-t/tc) + Yoff
mit Yoff = 0
gefittet haben möchte, dann kann man obere und untere Parametergrenze von Yoff auf Null setzen. Standardmäßig ist das bei der Funktion schon so gemacht, es gibt also überhaupt nichts zu tun.
Alternative Lösung:
Statt die konstanten Werte abzuschneiden, könnte man auch die vollständige Funktion fitten, die da lautet:
wenn t<t1, dann y=y0 sonst y=y0*exp(-(t-t1)/t2)
oder als Formelstring:
y = t<t1 ? y0: y0*exp(-(t-t1)/t2)
Labview selbst bietet nur einen Exponential-Fit der Form y=a*exp(b*x) an. Falls du jedoch y=a*exp(b*x)+c benötigst (also mit Offset), kann dir evtl. mein VI weiterhelfen.
Anzeige
05.10.2012, 12:05 (Dieser Beitrag wurde zuletzt bearbeitet: 05.10.2012 12:05 von BNT.)
(05.10.2012 11:11 )THL schrieb: Labview selbst bietet nur einen Exponential-Fit der Form y=a*exp(b*x) an. Falls du jedoch y=a*exp(b*x)+c benötigst (also mit Offset), kann dir evtl. mein VI weiterhelfen.
Das stimmt nicht, jedenfalls nicht für LabVIEW 2012, siehe Hilfe, und viele frühere Versionen. Nur für ganz alte Versionen mag es stimmen.
(05.10.2012 11:11 )THL schrieb: Labview selbst bietet nur einen Exponential-Fit der Form y=a*exp(b*x) an. Falls du jedoch y=a*exp(b*x)+c benötigst (also mit Offset), kann dir evtl. mein VI weiterhelfen.
Das stimmt nicht, jedenfalls nicht für LabVIEW 2012, siehe Hilfe, und viele frühere Versionen. Nur für ganz alte Versionen mag es stimmen.
Gruß Holger
Hast recht. Aus Kompatibilitätsgründen mit bestehender Software arbeite ich praktisch nur mit 8.6 - da hat es die Option nicht. In der 2011-Version, die ich sonst noch benutze (meist um die hier geposteten VIs überhaupt öffnen zu können ), berücksichtigt der Exp-Fit tatsächlich auch einen Offset.
Als aller erstes vielen Dank für die Antworten und eine große Entschuldigung, dass wir so doof waren und die falsche Datei hochgeladen haben, die richtige Datei ist im Anhang dieses Posts.
Die .vi von BNT konnten wir leider nicht öffnen, da unsere Labview Version zu alt ist.
Das Beispiel von Lucki haben wir allerdings nachgebaut und es funktioniert. Vielen Dank dafür!
Wir verstehen aber immer noch nicht warum bzw. was an unserer Lösung falsch/anders ist.
Hinzu kommt, dass bei Luckis ansatz zwar eine Zeitkonstante errechnet, der Fit aber nicht geplottet wird.
Eine weitere Frage betrifft zB. die Parameter Bounds. Wenn wir da von -Inf bis Inf beim Offset einstellen fittet Labview unsere Daten nicht mehr obwohl doch die Null im Intervall von -Inf bis Inf liegt.