angular 数据的 pchip

pchip for angular data

我正在尝试将形状保持插值曲线拟合到我的 angular 数据 (r/phi)。 但是,由于我在将数据点转换为 (x/y) 时重复了 x 值,所以我不能简单地使用 pchip.

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

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

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

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

感谢您的帮助!

使用一维参数插值:

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));