Using csaps (or similar) to create a 3D smoothing spline
조회 수: 22 (최근 30일)
이전 댓글 표시
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
채택된 답변
Dasharath Gulvady
2015년 5월 29일
편집: Dasharath Gulvady
2015년 5월 29일
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
추가 답변 (1개)
Bryan Howell
2016년 10월 31일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Spline Postprocessing에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!