|
Mazze |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.08.2012, 00:03
Titel: Least Square Methode
|
|
Hallo Leute,
ich habe da leider ein Problem, bei dem ich einfach nicht weiter komme. In einem Paper wird folgende Formel gegeben:
Danach wird dann davon gesprochen, dass sie die "least square method", also die "Methode der kleinsten Quadrate" benutzen um die die Koeffizienten zu berechnen. Das J berechne ich vorher schon und es ist ein (180,1) Vektor.
In MatLab habe ich dann die Funktionen nlinfit und polyfit gefunden. Aber ich komme einfach nicht auf einen grünen Zweig.
Hat irgendwer irgendeine Idee? Ich wäre für jeden Ansatz dankbar.
Viele Grüße,
Mazze
|
|
|
|
|
flashpixx |
Forum-Guru
|
|
Beiträge: 355
|
|
|
|
Anmeldedatum: 19.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.08.2012, 10:36
Titel: Re: Least Square Methode
|
|
Mazze hat Folgendes geschrieben: |
Das J berechne ich vorher schon und es ist ein (180,1) Vektor. |
Da wäre ich evtl nicht so sicher mit J bezeichnet man eigentlich die Jacobi-Matrix ( http://de.wikipedia.org/wiki/Jacobi-Matrix )
Mazze hat Folgendes geschrieben: |
In MatLab habe ich dann die Funktionen nlinfit und polyfit gefunden. Aber ich komme einfach nicht auf einen grünen Zweig.
Hat irgendwer irgendeine Idee? Ich wäre für jeden Ansatz dankbar.
|
Polyfit ist ein Polynom-Kurven-Fitting ( http://www.mathworks.de/help/techdoc/ref/polyfit.html ), wo ist bei Dir das Polynom?
Wie man nlinfit benutzt steht doch eigentlich in der Dokumentation http://www.mathworks.de/help/toolbox/stats/nlinfit.html
Generell ist es durchaus hilfreich, wenn Du das Problem inkl. der Daten beschreibst, denn "geht nicht, hat jemand eine Idee", ist weder
eine sinnvolle Fehlerbeschreibung, noch reicht die Information aus, dass man Dir helfen kann
|
|
|
Mazze |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.08.2012, 13:05
Titel:
|
|
|
|
|
Hi,
tut mir leid, dass ich so unspezifisch war. Dann werde ich mal probieren das Problem besser darzustellen.
Mein Ziel ist es die Methode der "mean intercept length" nach W.J. Whitehouse (Paper: The quantitative morpholoy of anisotropic trabecular bone) in Matlab zu implementieren.
Das angesprochene wird berechnet aus der Formel, die unter dem Beispielbild steht.
Da dieses ja über 180 Grad gemessen wird, habe ich es als Vektor der Größe (180,1) gespeichert. (Bitte das selber eingezeichnete vernachlässigen!!!)
Dieses wird später weiter benutzt um die "mean intercept length" zu berechnen nach der Formel : (wobei die relative Knochenflächen ist (Knochenfragmente geteilt durch die Bildgröße))
Auch diese liefert mir einen einen (180,1) Vektor zurück. Wenn ich nun diesen Vektor gegen die gemessenen 180 Grad plotte bekomme ich eine aus Punkten bestehende Ellipse. Nun ist mein Ziel aus diesen Punkten durch die Methode der kleinsten Quadrate und der schon vorher beschriebenen Funktion die Koeffizienten zu bestimmen, die ich brauche um die Ellipse zu beschreiben.
Jetzt ist mein Problem, dass ich keine Ahnung habe, wie ich das in MatLab bewerkstelligen kann. Deswegen habe ich schon viel gesucht und die schon genannten MatLab Funktionen gefunden.
Dass Polyfit nicht passt, sehe ich jetzt auch. Aber bei nlinfit habe ich, auch nachdem ich die Beschreibung gelesen habe, keine Ahnung, wie und ob ich es auf mein Problem anwenden kann. Vielleicht gibt es ja auch einen besseren Ansatz, den ich im Moment einfach nicht sehe.
Ich hoffe die Beschreibung meines Problems ist jetzt ein bischen besser als vorher.
Viele Grüße,
Mazze
|
|
|
flashpixx |
Forum-Guru
|
|
Beiträge: 355
|
|
|
|
Anmeldedatum: 19.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.08.2012, 13:36
Titel:
|
|
Mazze hat Folgendes geschrieben: |
Aber bei nlinfit habe ich, auch nachdem ich die Beschreibung gelesen habe, keine Ahnung, wie und ob ich es auf mein Problem anwenden kann. Vielleicht gibt es ja auch einen besseren Ansatz, den ich im Moment einfach nicht sehe.
|
der nlinfit passt schon. Hast Du Dir das Beispiel angeschaut, da ist das doch sehr schön erklärt. Du brauchst keine Fehlerfunktion (SSE) erstellen, das macht nlinfit schon für Dich, d.h. Du musst nur das Modell / Funktion aufstellen und Startwerte für die Optimierung festlegen
|
|
|
Sirius3 |
Forum-Guru
|
|
Beiträge: 441
|
|
|
|
Anmeldedatum: 12.11.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.08.2012, 14:07
Titel:
|
|
Hallo Mazze,
Dein Problem ist die Lösung eines überbestimmten linearen Gleichungssystems,
180 Gleichungen bei 3 Unbekannten (a,b,c).
Matlab kennt dafür den \-Operator.
Du hast vier Vektoren:
Ja, auch A=1 ist ein Vektor mit 180 Elementen;-)
M=[A,B,C] bildet eine 180x3-Matrix und x=[a;b;c] eine 3x1-Vector.
Du suchst also die Lösung zu J=Mx -> J/M=x -> x=M\J.
Ja ich weiß, der mittlere Schritt ist mathematisch nicht korrekt, aber so kommt man
durch spiegeln der ganzen Gleichung (inklusive /) auf den Matlab-Befehl:
Die Lösung (a,b,c)=x minimiert übrigens die Abweichung von J zu a*1+b*B+c*C,
also sum[(a*1+b*B+c*C - J)²]->min, daher der Name "least square".
Grüße
Sirius
|
|
|
MaFam |
Forum-Meister
|
|
Beiträge: 799
|
|
|
|
Anmeldedatum: 02.05.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2009b
|
|
|
|
|
|
Verfasst am: 18.08.2012, 19:37
Titel:
|
|
Hallo,
ich habe noch ein wenig Zweifel an dem Ansatz. Wenn eine gegebene Punktmenge mit einer Ellipse approximiert werden soll, dann muss doch irgendwo eine Ellipsengleichung auftauchen. Das sehe ich hier nicht.
Grüße, Marc
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|