wie, um eine glatte plot in matlab
Habe ich über 100 Datenpunkte, die meist befriedigend eine gewisse Funktion (aber einige Punkte sind aus). Ich möchte plot alle diese Punkte in eine glatte Kurve, sondern das problem ist, die Punkte sind nicht gleichmäßig verteilt. So ist das jedenfalls, um die glatte Kurve? Ich bin am überlegen zu interpolieren einige Punkte dazwischen, aber der einzige Weg, das kommt meiner Meinung nach zu Linear fügen Sie einige künstliche Punkte zwischen zwei Datenpunkten. Das wird sich aber zeigen eine ziemlich seltsame Form (wie einige scharfe Ecke). Also jede bessere Idee? Danke.
- Können Sie Ihre Daten und/oder ein Diagramm von den Rohdaten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn du mehr oder weniger wissen, was die tatsächlichen Kurve sein sollte, können Sie versuchen zu passen, dass die Kurve, um Ihre Punkte (z.B. mit
polyfit
). Je nachdem, wie viele Punkte aus sind und wie weit können Sie bekommen, indem Sie mit der least-squares-regression (was ist relativ einfach zu bekommen arbeiten). Wenn Sie zu viele Ausreißer (oder Sie sind viel zu groß/klein), können Sie auch versuchen, robuste regression (z.B. "kleinste absolute Abweichung" fitting) mit derrobustfit
Funktion.Wenn Sie können manuell bestimmen, den Ausreißer, können Sie auch passen Sie eine Kurve durch die anderen Punkte um bessere Ergebnisse zu erhalten oder sogar die Verwendung von Interpolationsmethoden (z.B.
interp1
in MATLAB) auf diese Punkte, um eine glattere Kurve.spline()
zu tun stückweise curve-fitting? Es werde "glatt" aus Sequenzen von Punkten, die nicht über eine einfache geschlossene form zugrunde liegende Funktion.interp1
mit der'spline'
parameter. Einziger Nachteil beider Methoden ist, dass Sie wählen Sie die Ausreißer ersten.Wenn Sie wissen, welche Funktion beschreibt Sie Ihre Daten, und robuster Schlauchanschluss (mit z.B. ROBUSTFIT, oder die neue praktische Funktionen LINEARMODEL und NONLINEARMODEL mit der
robust
option) ist ein guter Weg zu gehen, wenn es Ausreißer in den Daten.Wenn Sie nicht wissen, die Funktion, die beschreibt, Ihre Daten, wollen aber eine glatte Trendlinie, die wenig betroffen von Ausreißern, SMOOTHN aus der Datei Exchange hat eine ausgezeichnete Arbeit in meiner Erfahrung.
Haben Sie schaute auf die Verwendung von smoothing splines? Wie interpolierende splines, aber mit dem Knoten Punkte und Koeffizienten gewählt zu minimieren least-squares-error-Funktion. Es ist eine hervorragende Umsetzung von Matlab central, die ich erfolgreich eingesetzt worden.