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

Curve Fitting Tool - Polynomkoeffizienten sind falsch

 

Tai
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 03.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2012, 11:03     Titel: Curve Fitting Tool - Polynomkoeffizienten sind falsch
  Antworten mit Zitat      
Hallo,

ich habe mittels motion tracking die Koordinaten von Markern entlang des Rückens aufgenommen. Zur Interpolation habe ich das cftool verwendet. Bei 6 Markern habe ich meist ein Polynom 4ten o 5ten Grades genutzt. Soweit ist die optische Visualisierung dann auch meinen Vosstellungen entsprechend, wenn ich dann aber die ausgegebenen p1 bis p5 verwende und mit den entsprechenden x-Werten die Funktion nocheinmal berechne u plotten lassen, kommen y Werte bzw eine Kurve zu stande, die extrem weit weg von der Realität bzw vom vorher gefitteten Polynom sind. Also gehe ich davon aus, dass die Koeffizienten die da Ausgegeben werden absolut nicht stimmen.

hier zum Vergleich mal ein paar Wertepaare meiner Marker:

[x,y]
[1094,-604,7];[1134,-601.4];[1183,-607.8];[1234,-618.7];[1290,-625,8];[1345,-622,8]

und das Polynom was mir dazu berechnet wird ist:

-1.219*x.^4 + 7.786*.^3 + 1.645*x.2 - 20.19*x - 614.2

Hat jmd eine Idee, wie das Ganze zusammenhängt?
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: 11.01.2012, 11:13     Titel:
  Antworten mit Zitat      
Hallo,

ich bekomme andere Parameter. Zur Sicherheit: mit welcher MATLAB-Version arbeitest du?

Zur Interpolation wäre übrigens INTERP1 deutlich sinnvoller.

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 03.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2012, 11:49     Titel:
  Antworten mit Zitat      
Hallo Harald,

also ich nutze die R2011b version (7.13.0.564).

Und ja interp1 mit 'pchip' als methode liefert eine ganz gute Kurve, da ich aber das erste mal in die Richtung mit Matlab arbeite,war mir nicht gleich klar, wo ich die passenden Polynomwerte dazu herbekomme, drum bin ich kurzer Hand auf das cftool umgesattelt.
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: 11.01.2012, 12:10     Titel:
  Antworten mit Zitat      
Hallo,

ich habe dieselbe Version verwendet und kann deine Ergebnisse nicht nachvollziehen.

Code:
x = [1094, 1134, 1183, 1234, 1290, 1345];
y = [-604.7,-601.4,-607.8,-618.7,-625.8,-622.8]
cftool(x,y)

... und dann den Grad des Polynoms auf 4 stellen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 11.01.2012, 15:55     Titel:
  Antworten mit Zitat      
Hallo,

habe auch mal experimentiert: ich denke, dass Tai den Knopf "center and scale" aktiviert hat? Dann kommt natürlich ein verschobenes und skaliertes Polynom bei raus, die Koeffizienten reproduzieren dann natürlich nicht (direkt) das Ausgleichspolynom ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 11.01.2012, 16:12     Titel:
  Antworten mit Zitat      
Hallo,

vielleicht hilft das weiter: ausgehend von Harald's Daten habe ich folgendes gemacht:
Code:

% Daten:
x = [1094        1134        1183        1234        1290        1345];
y = [-604.7,-601.4,-607.8,-618.7,-625.8,-622.8];
% Werte für Plotten:
xi=1050:1350;
% scaliert und verschoben anhand dessen was cftool sagt:
xx = (xi-mean(x))/std(x);

% berechne Interpolationspolynom
yi = -1.219*xx.^4 + 7.786*xx.^3 + 1.645*xx.^2 - 20.19*xx - 614.2 ;
% sieht ganz gut aus, oder?
plot(xi,yi, 'r-', x, y, 'b*')


Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Tai
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 03.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2012, 08:26     Titel:
  Antworten mit Zitat      
Vielen Dank für die schnellen Antworten und @Titus: Ja, ich hab wirklich einfach nur nicht beachtet, dass ich center und scale aktiviert hatte und dann ja auch umrechnen muss. Jetzt funktionierts:)!
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 - 2024 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.