WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Least Square Methode

 

Mazze

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2012, 23:03     Titel: Least Square Methode
  Antworten mit Zitat      
Hallo Leute,

ich habe da leider ein Problem, bei dem ich einfach nicht weiter komme. In einem Paper wird folgende Formel gegeben:
[J_{A}(\omega)]^{2}= \alpha+\beta\cdot cos(2\cdot \omega)+\gamma\cdot sin(2\cdot \omega)

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

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2012, 09:36     Titel: Re: Least Square Methode
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Mazze

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2012, 12:05     Titel:
  Antworten mit Zitat      
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 J wird berechnet aus der Formel, die unter dem Beispielbild steht.

Da dieses J 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 A_{Ab} 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

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2012, 12:36     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 11.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2012, 13:07     Titel:
  Antworten mit Zitat      
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:
J=(J_A(\omega))^2, A=1, B=cos(2\omega), C=sin(2\omega)
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:
Code:
w=(0:179)';
A=ones(180,1);
B=cos(2*w*pi/180);
C=sin(2*w*pi/180);
x = [A,B,C]\J;
 


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
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 18.08.2012, 18:37     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.