How to make a curve smooth in spline block
5 次查看(过去 30 天)
显示 更早的评论
Hi, i need to make a cam model in simulink so i use a spline block to model the curve.Here is my code:
clear
clc
s=0:0.005:1;i=0;
for t1=0:0.005:0.125;
i=i+1;
s(i)=(pi*t1-0.25*sin(4*pi*t1))/(pi+4);
end
for t2=0.130:0.005:0.875;
i=i+1;
s(i)=(2+pi*t2-(9/4)*sin((pi+4*pi*t2)/3))/(pi+4);
end
for t3=0.880:0.005:1
i=i+1;
s(i)=(4+pi*t3-0.25*sin(4*pi*t3))/(pi+4);
end
T=0:0.005:1;
% plot(T,s);
r=1:1:21;n=0;
for m=1:5:201
n=n+1;
r(n)=(232^2+264.2^2-2*232*264.2*cos(deg2rad(20.69+18.5*s(m))))^(1/2);
end
th=60:(110/40):170;
x1=r.*cos(deg2rad(th));
y1=r.*sin(deg2rad(th));
% figure(2);
th2=170:0.5:190;
x2=169.*cos(deg2rad(th2));
y2=169.*sin(deg2rad(th2));
th3=300:(-110/40):190;
x3=r.*cos(deg2rad(th3));
y3=r.*sin(deg2rad(th3));
x3=fliplr(x3);
y3=fliplr(y3);
th4=-60:5:60;
x4=94.55.*cos(deg2rad(th4));
y4=94.55.*sin(deg2rad(th4));
x=[x1,x2,x3,x4];
x=x';
y=[y1,y2,y3,y4];
y=y';
% subplot(5,3,1);
% plot(x,y);
% axis([-150,150,-150,150]);
CAM=[x,y];
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/161159/image.png)
But the curve is not smooth,please tell me what is the problem.
0 个评论
回答(1 个)
Massimo Zanetti
2017-2-28
If you want to approximate a set of points by a smooth curve you need a smoothing spline, not just a spline. Moreover, in your case you need the smoothing spline to be a closed curve, therefore with periodic conditions.
I have done a function to do exactly that, check it out:
4 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Splines 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!