INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Downhill Simplex.vi



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!

28.10.2010, 10:52
Beitrag #1

devilsdoormat Offline
LVF-Grünschnabel
*


Beiträge: 28
Registriert seit: Oct 2010

LV 9.0.1
2010
de


Deutschland
Downhill Simplex.vi
Hallo,

ich versuche ein vi zum multipeak fitting in labview zu programmieren. Mein Ziel ist es derzeit dies über die Standardmethode der Minimierung der Abweichungsquadrate mit Hilfe des Simplex-Algorithmus zu erreichen. Für den Simplex-Algorithmus gibt es auch das "Downhill Simplex nD.vi". Leider gibt es nicht viele Beispiele im Netz zu diesem vi und ich bekomme derzeit die Fehlernachricht "-23001". Bei der Suche nach diesem Fehler bin ich vor allem auf Formatierungsprobleme in dem Formelstring gestoßen. Ich halte mich aber derzeit an alle wichtigen Konventionen, die ich gefunden habe und erhalte dennoch den Fehler. Kennt jemand die Ursache? Mein vi hängt an.

Danke für die Hilfe

Lv09_img2


Angehängte Datei(en)
Sonstige .vi  multipeak.vi (Größe: 20,57 KB / Downloads: 216)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.10.2010, 14:41
Beitrag #2

Jopi Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: Oct 2006

13.0.1f5 32Bit
2000
EN

82110
Deutschland
Downhill Simplex.vi
Ich habe ein bischen damit herumgespielt:

a) ersetzte Dein 200(!) Funktionen erstmal durch eine.
b) pi scheint nicht verarbeitet zu werden. Versuch erstmal 3.,14
c) Du schreibst 0.5; %f ergibt aber das lokale Zeichen, also möglicherweise ",". %,; benutzen.
d) Zähl Deine Klammern
Wenn die Syntaxproblematik erledigt ist kommt das hier:
e) Du erzeugst 200 Messpunkte die einen Peak ergeben. Dann erzeugst Du eine Funkktion mit 200 Termen abhängig von 2 Variablen,
die du dann minimieren willst. (Vom Draufschauen denke ich die Lösung ist: a=0, b egal)
Willst Du nicht eigentlich einen Gauss auf Deine simulierten Messwerte fitten? (Versuch mal Levenberg Marquardt)
Viel Erfolg, Jopi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.10.2010, 16:51 (Dieser Beitrag wurde zuletzt bearbeitet: 28.10.2010 16:52 von devilsdoormat.)
Beitrag #3

devilsdoormat Offline
LVF-Grünschnabel
*


Beiträge: 28
Registriert seit: Oct 2010

LV 9.0.1
2010
de


Deutschland
Downhill Simplex.vi
Hi,

ich sehe nicht genau welche 200 Funktionen du unter a) meinst. In der ersten for-Schleife berechne ich halt 200 simulierte Messdaten, in der zweiten Schleife konstruiere ich die Summe der Abweichungsquadrate, die auch 200 Terme haben muss.

Woran hast du denn erkannt, dass "pi" nicht verarbeitet wird? Dass im String noch "pi" steht, is ja klar, da es eben noch der nicht weiterverarbeitete String ist.

Der Hinweis mit dem Komma statt dem Punkt ist gut. Darauf hatte ich nciht geachtet. Hilft aber auch noch nichts.

Die Klammern habe ich diverse male gezählt und keine Fehler gefunden ^_^

a=0, b egal stimmt so nicht. Allein, weil a=0 ein singulärer Punkt ist. Es ist halt doch keine so triviale Aufgabe.

In diesem Beispiel will ich natürlich einen Gauß fitten. Letztlich wollte ich aber nur den das Simplex-Algorithmus vi testen. Ich habe vor auf Messdaten je nach Auswahl bis zu ca. 5 Gauß- oder Lorentz- oder Voigt-Profile über ca. 100 Daten-Puntke zu legen.

Ich habe inzwischen das vi einfach noch mal ganz neu geschrieben und aus mir zunächst einmal unverständlichen gründen funktioniert es jetzt. Es funktioniert auch mit 2 Gaußkurven (siehe Anhang). Leider dauert das ganze sehr, sehr lange. Von der Effektivität der Algorithmen habe ich leider nicht viel Ahnung. Ich habe nur mal irgendwo aufgeschnappt, dass der Simpelx-Algorithmus schon zu den schnellsten gehört. Ist denn Levenberg Marquardt für meine Zwecke besser?

Gruß

Lv09_img2


Angehängte Datei(en)
Sonstige .vi  multipeak3.vi (Größe: 21,56 KB / Downloads: 224)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.10.2010, 09:51
Beitrag #4

devilsdoormat Offline
LVF-Grünschnabel
*


Beiträge: 28
Registriert seit: Oct 2010

LV 9.0.1
2010
de


Deutschland
Downhill Simplex.vi
Hallo,

das Nichtlineare Kurvenanpassung VI, das den Levenberg-Marquardt-Algorithmus verwendet ist genau das, was ich gesucht habe. Danke für den Tip.

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: