如何用matlab拟合圆形曲线?

时间:2014-02-19 09:04:55

标签: matlab graphics curve-fitting

我想用matlab将曲线在一定范围内用圆圈拟合。 我想将这条曲线从x = 0,1拟合到x = 0.5,并得到圆的半径。

你有什么想法如何用matlab做到这一点? enter image description here

提前致谢

2 个答案:

答案 0 :(得分:1)

除了使用the equation for a circle之外,还可以通过计算(x,y)平面中所有点的平均中心,然后计算该中心与所有点之间的平均距离来手动完成。

答案 1 :(得分:1)

我认为这是最小二乘最小化问题。您最小化了向量函数的范数[f1,f2,...fn]相对于x0y0r,其中fi(x0,y0,r) = (xi-x0)^2 + (yi-y0)^2 - r^2。此处,xiyi代表您的数据,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是一个内部有x0y0r的解决方案向量。