Verfasst am: 08.10.2015, 16:46
Titel: Polynome hinter Smoothing Spline
Hallo,
ich untersuche gerade experimentelle Daten mit Smoothing Spline.
Das Programm dazu sieht so aus:
Code:
function[fitresult, gof] = createFit(height_m, rho_verlauf_exp_kg_m3)
%CREATEFIT(HEIGHT_M,RHO_VERLAUF_EXP_KG_M3) % Create a fit.
%
% Data for 'untitled fit 1' fit: % X Input : height_m % Y Output: rho_verlauf_exp_kg_m3 % Output: % fitresult : a fit object representing the fit. % gof : structure with goodness-of fit info.
%
% See also FIT, CFIT, SFIT.
% Auto-generated by MATLAB on 08-Oct-2015 13:56:12
Das Ganze sieht auch gut aus. Mit fitresult.p.coefs kann ich mir jetzt die Koeffizienten der Polynome ausgeben lassen, allerdings finde ich nicht heraus, wie diese Polynome dann aussehen...kann mir da jemand helfen? Ich denke, es sind kubische splines, stimmt das?
Also wie muss ich ein Polynom schreiben, um an einer Stelle x (an einem Wert von height_m) den entsprechenden Wert y (also den Wert von rho_verlauf_exp_kg_m3) zu bekommen?
Ich weiß, das ist eigentlich die gleiche Frage wie bei CubaMan:
ich habe mich mal deinem Problem angenommen. Ich habe eine sehr viel elegantere Lösung für dein Problem, leider aber auch eine sehr komplizierte, falls du dich mit den Details auseinandersetzen willst.
In deinem Fall würde ich die Cubic Smoothing Splines benutzen http://de.mathworks.com/help/curvefit/csaps.html
Diese sind von einem Glättungsfaktor (Lambda) abhängig. Diesen kannst du zwischen einschließlich 0 bis 1 wählen, also eine prozentuale Gewichtung einstellen. Für Lambda gegen 1 erhälst du einen Spline der exakt durch alle Messdaten geht (kein Glättungseffekt). Für Lambda gegen 0 erhälst du eine Regressionsgerade (starke Glättung). I.d.R. versucht du also einen Wert zwischen 0 und 1 zu finden, der eine optisch gute Glättung erzielt. FÜr deinen Fall würde ich Lambda gleich 0.9999999999999 wählen. Wie das Lambda zu wählen ist, ist nicht immer ganz klar, z.b. ist der Spline für deine Messdaten schon bei einem Lambda von 0.99999999 ungefähr einen Regressionsgerade.
Der Vorteil dieser Variante ist, um auf deine Frage zurück zu kommen, dass in dem struct "pp" alle Informationen enthalten sind. Mit pp.coefs kannst du z.b. alle koeffizienten der stückweisen Polynome aufrufen.
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
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.