punkte rechnen auf spline < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Aufgabe | neupunktberechen auf spline interpolant |
habe einen 2 dimensionalen vektor eingelesen un diesen dann geplotet.
nun hab ich durch meinen punkte (mit basic fitting) ein spline interpolant zeichnen lassen.
meine frage : kann ich zwischen meinen punkten auf dem spline weitere (neu)punkte rechnen ? also quasi in einem bestimmten abstand auf dem spline neu punkte rechnen ?
wäre super wenn mir jemand helfen könnte, bin schon ziemlich verzweifelt !
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:38 Fr 12.05.2006 | Autor: | dormant |
Hi!
> meine frage : kann ich zwischen meinen punkten auf dem
> spline weitere (neu)punkte rechnen ? also quasi in einem
> bestimmten abstand auf dem spline neu punkte rechnen ?
Also die Matlab-Funktion spline.m macht gerade das was du gerne hättest. Ich empfehle dir erstmal help spline einzugeben und die Beschreibung der Funktion zu lesen. Konkret zu deiner Frage: ich geh mal davon aus, dass du eine n x 2 Matrix hast, die du geplottet hast. Nenne wir diese v, dann sind v(:,1) deine x-Stützstellen und v(:,2) die f(x)-Stützstellen. Dann kannst du das hier machen:
plot(v(:,1), v(:,2)); % Stützstellen plotten
n=length(v(:,1));
xx=v(1,1):n/10:v(n,1);
yy=spline(v(:,1), v(:,2), xx);
Somit hast du deine (Mess)daten um das 10-fache durch spline-interpolation verfeinert. Die neuen x-Daten hast du in dem Vektor xx, und die entsprechenden f(x)-Daten in dem Vektor yy.
Gruß,
dormant
|
|
|
|
|
vielen dank, habe die hoffnung zur lösung schon fast aufgeben.
hab nur noch anscheinend einen kleinen blackout, mein xx bzw yy ist immer nur 1x1 (also nur ein wert) gross. was mach ich denn da falsch ?
Lg und vielen Dank im vorraus
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 17:42 So 14.05.2006 | Autor: | dormant |
Hi!
Ähm, ja, das war ganz schön blöd von mir. Man muss ja die Intervalllänge verfeinern. Das geht so:
n=length(v(:,1));
intlength=v(n,1)-v(1,1);
xx=v(1,1):intlength/n*10:v(n,1);
yy=spline(v(:,1), v(:,2), xx);
Jetzt hast 10 Mal so viele Stützstellen. Der Abstand zwischen zwei von den neuen Stützstellen beträgt genau intlength/n*10. Wenn du dieses Koefizient verkleinerst (z.B. indem du den Nenner vergrößerst), kriegst du noch mehr Stützstellen.
Gruß,
dormant
|
|
|
|