2017-04-04 39 views
0

我正在嘗試使角度數據(r/phi)的插值曲線符合形狀。 但是,當我將數據點轉換爲(x/y)時,我重複了x值,所以我不能簡單地使用pchip。用於角度數據的pchip

我知道樣條插值,有cscvn和fnplt,有什麼類似的芯片?

此外,還有一個樣條擬合「樣條」的matlab文檔中的角度數據的例子,但我不完全瞭解它如何將其適用於芯片和不同的數據點。

我也發現了約翰d'Errico的interparc-function,但我想保留我的數據點而不是等間距的數據點。

爲了使它更清晰,here我的數據點的數字與線性(藍色)和樣條插值(黑色)。我希望得到的曲線將介於這兩者之間,沒有線性情況下的陡峭邊緣,但是比樣條情況下的過沖少。...

感謝您的幫助!

回答

0

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

enter image description here

+0

完美,非常感謝! –