ich möchte gerne die Punkte, siehe Anhang interpolieren.
Ziel ist es, eine Beschleunigung für eine variable Geschwindigkeit zu erhalten (visuell) ==> v(a)
die Vorgehensweise war folgende:
ich habe ca. 2400 Geschwindigkeitswerte (Typ double), jede Sekunde mitgelockt und differenziere diese. Dann bekomme ich die dazugehörigen Beschleunigungen. Diese habe ich geplotet. Jetzt würde ich gerne eine Interpolation durchführen. Funktioniert leider nicht:
Hier der Code:
f_v ..... Geschwindigkeitsvektor
f_a ..... Beschleunigungsvektor
plot(vg(1:length(vg)-1),f_a,'*')
hold on
set(gca,'YTick',[-5 -4 -3 -2 -1 0 1 2 3 4 5])
grid on
title('Beschleunigung - Geschwindigkeit')
ylabel('Beschleunigung a [m/s²]')
xlabel('Geschwindigkeit v [km/h]')
Fehler:
??? Undefined function or method 'smooth' for input arguments of type 'double'.
Error in ==> matl_1 at 128
x=smooth(f_v(1:length(f_v)-1),f_a,'sgolay')
Die Fehlermeldung besagt, dass MATLAB die Funktion smooth nicht findet. Beabsichtigst du, smooth aus der Curve Fitting Toolbox zu verwenden? Hast du diese Toolbox denn?
das ist für mich Neuland.
Deshalb habe ich try und error versucht.
Eine Beabsichtigung war das nicht.
Welche Vorgehensweise/ würdest du mir vorschlagen?
Nicht unbedingt bezogen auf meine Funktion, sondern einen Graphen durch die Punktwolkte zu legen. z.B. least-square-methode.
du schreibst erst Interpolation, verwendest dann einen Befehl zur Glättung, und sagst jetzt, dass du mit least-squares arbeiten möchtest, also Regression.
Mir ist also nicht klar, was du erreichen möchtest. Das ist aber Voraussetzung, um dir helfen zu können.
Ich möchte aus dieser Punktwolke eine möglichst genaue Kennlinie erhalten. ich weiß aber nicht, welche sinnvolle Methodik ich anwenden soll.
(Mathematisch gesehen und die ich auch in Matlab nutzen kann)
Da ich außerdem in Matlab ein Neuling bin, weiß ich nicht, wenn ich mich für eine Methode entscheiden würde, wie diese in Matlab heißt und wie ich diese umsetze.
eine Kennlinie, die v in Abhängigkeit von a ergibt?
Wenn du dir deine Datenpunkte ansiehst, dürfte das schwierig werden, da zumindest ich keinen sinnvollen Zusammenhang erkennen kann.
Beispiel: für a nahe 0 kann v irgendetwas zwischen 0 und 100 m/s sein. Wieso auch nicht, wenn ich nicht beschleunige, lässt das ja keinen Rückschluss darauf ziehen, welche Geschwindigkeit ich fahre.
nein, eine Kennlinie, die a in Abhängigkeit von v ergibt.
Also a über v!
Dann kann ich nämlich erkennen, welche "Durchschnittsbeschleunigung" ich bei einer bestimmten Geschwindigkeit habe.
D.h. Ich beschleunige von 80 auf 100 km/h jedes mal anders. Jetzt will ich davon den "Mittelwert" bilden, also von a(v).
Deswegen meinte ich vorhin auch die Methode der kleinsten Quadrate.
Gibt es an dieser Stelle eine Methodik, wie man das in Matlab realisieren kann?
Kommt in der Liste dann die Statistics Toolbox vor?
zu 1.:
Du solltest schon das ganze Beispiel anpassen. Hier wird hougen als Modellfunktion verwendet, und es wäre schon ein sehr großer Zufall, wenn dieses Modell für deine Daten passt.
Das Beispiel "Nonlinear Regression Using Robust Options" aus der Dokumentation von nlinfit lässt sich vielleicht eher für deine Zwecke abwandeln.
MATLAB Version 7.7 (R2008b)
Simulink Version 7.2 (R2008b)
Real-Time Workshop Version 7.2 (R2008b)
Real-Time Workshop Embedded Coder Version 5.2 (R2008b)
Stateflow Version 7.2 (R2008b)
Stateflow Coder Version 7.2 (R2008b)
>>
also keine Statistik Toolbox.
Ich nehme jetzt mal die negativen Werte heraus und schaue mir das Ganze noch mal an.
Viele Grüsse
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
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.