2012-06-11 26 views
9

Es ist nur eine grundlegende Frage. Ich füge Linien zu Streupunkten mit polyfit. Ich habe einige Fälle, in denen meine Streupunkte die gleichen X-Werte haben und polyfit keine Zeile passen kann. Es muss etwas geben, das mit dieser Situation umgehen kann. Es passt schließlich nur zu einer Linie.Vertikale Linie passen mit Polyfit

Ich kann versuchen, X und Y auszutauschen und dann eine Linie tannen. Jede einfachere Methode, weil ich viele Sätze von Streupunkten habe und eine allgemeine Methode zum Überprüfen von Linien haben möchte.

Hauptziel ist es, Linien mit guter Anpassung zu finden und nichtlineare Funktionen zu löschen.

+0

Nun, um der Antwort willen, Swapping X und Y, wenn Sie zu wenige X-Werte haben, funktioniert gut. – Naresh

Antwort

6

Zunächst geschieht dies aufgrund der von Ihnen verwendeten Anpassungsmethode. Wenn Sie polyfit tun, verwenden Sie die Methode der kleinsten Quadrate unter Y Abstand von der Linie.

http://www.une.edu.au/WebStat/unit_materials/c4_descriptive_statistics/image23.gif

Offensichtlich wird es nicht für vertikale Linien arbeiten. Übrigens, selbst wenn Sie etwas in der Nähe von vertikalen Linien haben, können Sie numerisch instabile Ergebnisse erhalten.

Es gibt zwei Lösungen:

  1. Swap x und y, wie Sie gesagt haben, wenn Sie wissen, dass die Linie fast senkrecht steht. Berechnen Sie anschließend die inverse lineare Funktion.
  2. Verwenden der kleinsten Quadrate auf senkrechten Abstand von der Linie, anstelle von vertikalen (siehe Bild unten) (weitere Erläuterung in here)

http://mathworld.wolfram.com/images/eps-gif/LeastSquaresOffsets_1000.gif

+0

hmm. In Matlab Code eingeben. Werde sobald ich etwas habe, das funktioniert. – Naresh

+0

Sehr schöne Lösung :) – feelfree

+0

Gibt es noch eine weitere Lösung, Matlab polyfit basiert auf senkrechten Abstand von der Linie? –

2

Polyfit lineare Kleinste-Quadrate-Approximation verwendet und wird nicht erlauben wiederholte Abszisse, da die resultierende Vandermonde-Matrix einen Rangmangel aufweisen wird. Ich würde vorschlagen, etwas Statistischeres zu finden. Wenn Sie es Andreys Methode der Forschung in der Regel durch die Namen Total Least Squares oder Orthogonal Abstand Regressions http://en.wikipedia.org/wiki/Total_least_squares

Ich würde auch die Möglichkeit des Erfassens vorbringen vorläufig geht, wenn Sie gleichzeitige x-Werte haben, dann Ihre Daten über den Ursprung Dreh , passe die Linie an und transformiere die Linie dann zurück. Ich konnte nicht sagen, wie schlecht das funktionieren würde und nur Sie könnten entscheiden, ob es eine Option war, die auf Ihren Genauigkeitsanforderungen basiert.

+0

danke für den Kommentar. Ich weiß das. Ich brauche eine Lösung. Ich brauche das "etwas Statistischeres". Irgendein Vorschlag? – Naresh

Verwandte Themen