plot smooth curve through discreet points
1 次查看(过去 30 天)
显示 更早的评论
I have discreet data for x=[38.7330 -19.2503 -50.7264 -65.8133 -71.4051 104.5372 51.8456 24.5807 12.5377 8.4663 -8.4663 -12.5377 -24.5807 -51.8456 -104.5372 71.4051 65.8133 50.7264 19.2503 -38.7330]; and y=[-0.5000 -0.4375 -0.3750 -0.3125 -0.2500 -0.2500 -0.1875 -0.1250 -0.0625 0 0 0.0625 0.1250 0.1875 0.2500 0.2500 0.3125 0.3750 0.4375 0.5000];
when I plot for x and y the curve is not smooth How to make the plot smooth curve passing through points and maintaining the shape
0 个评论
采纳的回答
Thorsten
2015-1-21
编辑:Thorsten
2015-1-21
First you have to interpolate x depending on y. Next, you have to do the interpolation separately for each of the discontinuous segments. Since the function has discontinuities after every 5 data points, we don't have to figure out the discontinuities but interpolated every set of 5 points separately (the xi_end, yi_end denote the last data point of the previous segment to plot the horizontal lines):
ind0 = 1:5; xi_end = NaN; yi_end= NaN;
for i = 1:numel(y)/numel(ind0)
ind = ind0 + 5*(i-1);
yi = linspace(y(ind(1)), y(ind(end)));
xi = interp1(y(ind), x(ind), yi, 'spline');
plot([xi_end xi], [yi_end yi])
hold on
xi_end = xi(end);
yi_end = yi(end);
end
更多回答(2 个)
Alessandro Masullo
2015-1-20
xx = linspace(min(x),max(x),100); yy = spline(x,y,xx); figure,plot(x,y,'o',xx,yy)
1 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Smoothing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!