Using csaps (or similar) to create a 3D smoothing spline
23 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Laurence hutton-smith
am 28 Mai 2015
Beantwortet: Bryan Howell
am 31 Okt. 2016
I have a series of 3D points and am looking to create any sort of smoothing spline, I was hoping to use scaps, but it only seems to take in 2D data, can anyone help with this? Is there for instance a way to input 3D data into it or another function I could use?
0 Kommentare
Akzeptierte Antwort
Dasharath Gulvady
am 29 Mai 2015
Bearbeitet: Dasharath Gulvady
am 29 Mai 2015
You can do this using "csaps" function. However the trick is to make "z" your independent variable.
[pp,p]=csaps(z,[x;y]);
val=fnval(pp,z);
figure,plot3(x,y,z);
hold on,plot3(val(1,:),val(2,:),z,'r-')
grid on
Weitere Antworten (1)
Bryan Howell
am 31 Okt. 2016
The accepted answer is quite elegant but doesn't work for all types of trajectories, especially those where the z value is relatively constant.
An alternative approach is to fit a smoothing spline for each dimension and then combine. For example...
% given data in a point matrix, xyz, which is 3 x number of points
[ndim,npts]=size(xyz);
xyzp=zeros(size(xyz));
for k=1:ndim
xyzp(k,:)=ppval(csaps(1:npts,xyz(k,:)),1:npts);
end
This approach is also not a panacea but can address some cases where the first answer might fail.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Spline Postprocessing finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!