필터 지우기
필터 지우기

Using csaps (or similar) to create a 3D smoothing spline

조회 수: 20 (최근 30일)
Laurence hutton-smith
Laurence hutton-smith 2015년 5월 28일
답변: Bryan Howell 2016년 10월 31일
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?

채택된 답변

Dasharath Gulvady
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
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.

카테고리

Help CenterFile Exchange에서 Spline Postprocessing에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by