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

spline toolbox; spap2; 2te Ableitung

 

curvature
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 03.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2008, 16:20     Titel: spline toolbox; spap2; 2te Ableitung
  Antworten mit Zitat      
Hallo, ich habe Probleme mit der Kontinuität der 2ten Ableitung unter Verwendung der 'least square approximation' spap2.
Vielleicht hat ja jemand von euch schon Erfahrung damit. Ich habe einen 2-dimensionalen Datensatz der eine Kurve beschreibt. Ich nutze die chord-legth Parametrisierung, um die Krümmung dieser Kurve bestimmen zu können.
Die zweite Ableitung (komponentenweise) ist aber nicht kontinuierlich. Soweit ich verstehe liegt das daran, dass die Spline in n-Polynome, abhängig von der Knotenzahl, unterteilt ist die seperat abgeleitet werden. An den Berührungspunkten entstehen dadurch Sprungstellen die meine 'echten' Ergebnisse überlagern. Ich habe es auch schon mit sp = spap2(1,k,x,y));, gefolgt von sp1 = spap2(newknt(sp),k,x,y)); versucht, weil dies eigentlich laut Handbuch k-2 kontinuierliche Ableitungen hervorbringen sollte. Dies ruft jedoch eine Fehlermeldung hervor 'at present this only works for univariate scalar-valued fkt'. Demnach funktioniert es nicht mit parametrisierten Daten.

Als Beispiel verwende ich folgende Funktion. sin(x)+(sin(x*0.5)+0.5)+(0.5*sin(x+3)) mit x=0:0.1:4*pi;

Wäre für jeden Vorschlag dankbar

programmcode:

function knots

close all

x = 0:0.1:4*pi;
y = sin(x)+(sin(x*0.5)+0.5)+(0.5*sin(x+3));
aPos = [y;x]';

%---- spap2 ------------------------------

%---- chord-length parametrization --------
df = diff(aPos)';
s = cumsum([0, sqrt([1 1]*(df.*df))]);
%------------------------------------------

%------------------------------------------
k = 4;
knots = 20;
rS = spap2(knots,k,s,flipud(aPos'));

%------------------------------------------


l = length (x)/10;
idx =0:0.1:l;

%~~~ curvature ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dx = fnval(fnder(fncmb(rS,[1 0])),idx);
dy = fnval(fnder(fncmb(rS,[0 1])),idx);
ddx = fnval(fnder(fncmb(rS,[1 0]),2),idx);
ddy = fnval(fnder(fncmb(rS,[0 1]),2),idx);
kappa = abs(ddx.*dy-ddy.*dx)./((dx.^2+dy.^2).^(3/2));
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

%---------- plot --------------------------
figure; p_make_fig_full_screen()
subplot(1,2,1);
fnplt(rS); hold on;p_plotpos(aPos, 'xr'); axis ([-1 14 -1 2]);
legend ('spap2 after chord-length-parametrization','data');
subplot(1,2,2)
plot(kappa,'b'); hold on; legend('second derivative')
%-------------------------------------------
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.