Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 用于角度数据的pchip_Matlab_Interpolation_Polar Coordinates - Fatal编程技术网

Matlab 用于角度数据的pchip

Matlab 用于角度数据的pchip,matlab,interpolation,polar-coordinates,Matlab,Interpolation,Polar Coordinates,我正在尝试将形状保持插值曲线拟合到角度数据(r/phi)。 但是,由于在将数据点转换为(x/y)时重复了x值,因此不能简单地使用pchip 我知道样条插值有cscvn和fnplt,pchip有类似的吗 此外,在“样条曲线”的matlab文档中有一个样条曲线拟合角度数据的示例,但我不太明白如何使其适应pchip和不同的数据点 我还发现了John d'Errico的数据点,但我希望保留我的数据点,而不是等间距的数据点 为了让它更清楚,我的数据点的一个数字与线性(蓝色)和样条插值(黑色)。我想要得到的

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

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

此外,在“样条曲线”的matlab文档中有一个样条曲线拟合角度数据的示例,但我不太明白如何使其适应pchip和不同的数据点

我还发现了John d'Errico的数据点,但我希望保留我的数据点,而不是等间距的数据点

为了让它更清楚,我的数据点的一个数字与线性(蓝色)和样条插值(黑色)。我想要得到的曲线介于这两者之间,在线性情况下没有陡峭的边缘,但比样条曲线情况下的超调小


谢谢你的帮助

使用1D参数插值:

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