我想用曲線擬合在一定範圍內的一個圓的曲線波紋。 我想從x = 0,1到x = 0,5擬合這條曲線,並得到圓的半徑。如何用matlab的圓來擬合曲線?
你有什麼想法如何用matlab做到這一點?
預先感謝
我想用曲線擬合在一定範圍內的一個圓的曲線波紋。 我想從x = 0,1到x = 0,5擬合這條曲線,並得到圓的半徑。如何用matlab的圓來擬合曲線?
你有什麼想法如何用matlab做到這一點?
預先感謝
我認爲這是最小平方最小化問題。您最小化矢量函數[f1,f2,...fn]
相對於x0
,y0
和r
的範數,其中fi(x0,y0,r) = (xi-x0)^2 + (yi-y0)^2 - r^2
。這裏,xi
和yi
代表您的數據,而i=1..n
。
那麼首先你創建一個向量函數
function [ f ] = circle_fun(x0, y0, r, xdata, ydata, n)
f = zeros(n,1);
for i=1:n
f(i) = abs((x0-xdata(i))^2 + (y0-ydata(i))^2 - r^2);
end
end
並使用MATLAB
f = @(inputs) circle_fun(inputs(1),inputs(2),inputs(3), xdata, ydata, n);
v0 = [0.1, 0.1, 0.1];
[v_opt,resnorm] = lsqnonlin(f,v0);
v0
最小二乘最小化功能的初始猜測和v_opt
是具有x0
,y0
解向量,和r
裏面。
除了使用the equation for a circle,人們可以手工通過計算所有點的在(x,y)平面的平均中心,然後計算平均距離該中心和所有之間做點。
你有什麼想法如何手動做到這一點?或者用其他語言? –
我不知道如何手動做,我是新的matlab – user3177755