create a 3D smoothing with csaps (or similar)

3 visualizzazioni (ultimi 30 giorni)
To get a better set of nodes arranged in space as a ‘curve’, how can I improve this code? Could you suggest?
load curve_1
cc = curve_1; %or curve_2
x = cc(:,1);
y = cc(:,2);
z_min = min(cc(:,3));
z_max = max(cc(:,3));
z = z_min:0.1:z_max;
z = z';
% code
[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

Risposta accettata

Mathieu NOE
Mathieu NOE il 7 Giu 2024
hello again !
as your post title is about smoothing, this is what I propose , based on the fex submission :
I attached the function in my answer if it makes your life simpler
now, maybe we should also create some intermediate points with interpolation (will be done just after this first answer)
so the starter :
load curve_1
cc = curve_1; %or curve_2
% load curve_2
% cc = curve_2; %or curve_2
x = cc(:,1);
y = cc(:,2);
z = cc(:,3);
% smoothing (if needed)
[zz,s,exitflag] = smoothn({x,y,z},1);
xn = zz{1};
yn = zz{2};
zn = zz{3};
plot3(x,y,z,'*');
hold on
plot3(xn,yn,zn);
  4 Commenti
Alberto Acri
Alberto Acri il 7 Giu 2024
Thank you @Mathieu NOE! You always surprise me!
Mathieu NOE
Mathieu NOE il 10 Giu 2024
My pleasure , and thanks again for accepting my answer
you can also reward other contributors by voting

Accedi per commentare.

Più risposte (1)

Matt J
Matt J il 7 Giu 2024
Modificato: Matt J il 7 Giu 2024
load curve_1
cc = curve_1; %or curve_2
x = cc(:,1);
y = cc(:,2);
z = cc(:,3);
t=linspace(0,1,height(cc));
tu=linspace(0,1,5*height(cc));
% code
[pp,p] = csaps(t,cc',0.995);
val = fnval(pp,tu);
figure
plot3(x,y,z,'o');
hold on
plot3(val(1,:),val(2,:),val(3,:),'r-')
grid on
  1 Commento
Alberto Acri
Alberto Acri il 7 Giu 2024
Thank you! I accepted Mathieu's answer because it gave me more solutions. However, your answer is well accepted and I cannot accept both!

Accedi per commentare.

Categorie

Scopri di più su Spline Postprocessing in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by