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

Punktwolke interpolieren

 

Eugen
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 12.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2013, 15:56     Titel: Punktwolke interpolieren
  Antworten mit Zitat      
Hallo,

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

scatter(f_v(1:length(f_v)-1),f_a,'.')
x=smooth(f_v(1:length(f_v)-1),f_a,'sgolay')

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')

Kann mir jemand weiterhelfen?

Viele Grüsse
Smile

test.png
 Beschreibung:

Download
 Dateiname:  test.png
 Dateigröße:  31.04 KB
 Heruntergeladen:  586 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.11.2013, 16:43     Titel:
  Antworten mit Zitat      
Hallo,

Interpolation geht grundsätzlich mit interp1.

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?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Eugen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 12.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2013, 16:51     Titel:
  Antworten mit Zitat      
Hallo Harald,

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.

Vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.11.2013, 17:00     Titel:
  Antworten mit Zitat      
Hallo,

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.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Eugen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 12.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2013, 17:13     Titel:
  Antworten mit Zitat      
hallo Harald,

ich habe mich unverständlich ausgedrückt.

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.

Viele Grüsse!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.11.2013, 20:39     Titel:
  Antworten mit Zitat      
Hallo,

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.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Eugen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 12.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2013, 21:36     Titel:
  Antworten mit Zitat      
hallo Harald,

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?

Viele Grüsse
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.11.2013, 08:33     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Deswegen meinte ich vorhin auch die Methode der kleinsten Quadrate.
Gibt es an dieser Stelle eine Methodik, wie man das in Matlab realisieren kann?

Das kommt auf das Modell an.
Polynom: polyfit
allg. linear: \ , regress
allg. nichtlinear: nlinfit

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Eugen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 12.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2013, 10:20     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe es mit nlinfint probiert:

Code:
%nlinfit
x = vg(1:length(vg)-1);
y = f_a;
beta0 = [0.5,0.5];
beta = nlinfit(x,y,@hougen,beta0);
subplot(2,2,3);
plot(beta)
%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]')
 

folgender Fehlermeldung:

??? Undefined function or method 'nlinfit' for input arguments of type
'function_handle'.

Error in ==> matl_1 at 121
beta = nlinfit(x,y,@hougen,beta0);

zwei Fragen:

1. welche sinnvollen Werte könnte man für beta0 setzten?
wie geht man hier vor, wenn man 2400 Werte hat?

2. "Undefined function or method 'nlinfit' for input arguments of type
'function_handle'"

Wie weiche ich diesem Problem aus?

[Edited, Jan, Bitte Code Umbegung verwenden, Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.11.2013, 10:58     Titel:
  Antworten mit Zitat      
Hallo,

zu 2.:
Die Fehlermeldung klingt so, als ob es die Funktion nicht gäbe - z.B. weil die Statistics Toolbox nicht verfügbar ist. Gib ma folgendes ein
Code:

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.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Eugen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 12.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2013, 12:20     Titel:
  Antworten mit Zitat      
Hallo,

nach Eingabe von "ver"

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
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 - 2025 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.