用于角度数据的pchip

时间:2017-04-04 12:07:09

标签: matlab interpolation polar-coordinates

我试图将形状存储插值曲线拟合到我的角度数据(r / phi)。 但是,当我将数据点转换为(x / y)时,我重复了x值,我不能简单地使用pchip。

我知道对于样条插值,有cscvn和fnplt,pchip有什么类似的吗?

此外,在样条" spline"的matlab文档中有一个样条拟合角度数据的例子,但我不太明白我如何使它适应pchip和不同的数据点

我还找到了John d' Errico的interparc-function,但我想保留我的数据点而不是等间距的数据点。

为了更清楚,here我的数据点的数字有线性(蓝色)和样条插值(黑色)。我想要获得的曲线将介于这两者之间,没有线性情况下的陡峭边缘,但是比花键情况下的过冲更少......

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

使用一维参数插值:

n = 20;
r = 1 + rand(n-1,1)*0.01;%noisy r's
theta = sort(2*pi*rand(n-1,1));
% closing the circle
r(end+1) = r(1);
theta(end+1) = theta(1);
% convert to cartesian
[x,y] = pol2cart(theta,r);
% interpolate with parameter t
t = (1:n)';
v = [x,y];
tt = linspace(1,n,100);
X = interp1(t,v,tt,'pchip');
% plot
plot(x,y,'o');
hold on
plot(X(:,1),X(:,2));

enter image description here