【基础教程】基于Matlab实现多种算法的曲线拟合

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

个人主页:Matlab科研工作室

个人信条:格物致知。

更多Matlab仿真内容点击

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机

⛄ 内容介绍

物理量之间的函数关系在实际研究工作有很重要的作用.本文首先介绍了最小二乘原理.其次介绍了用Matlab实现曲线拟合以得到函数关系的方法和步骤.最后举例比较了采用不同方法进行拟合得到的结果.

⛄ 部分代码

function varargout = ellipse_im2ex(varargin)

% Cast ellipse defined with implicit parameter vector to explicit form.

%

% See also: ellipse_ex2im

% Copyright 2011 Levente Hunyadi

if nargin > 1

    narginchk(6,6);

    for k = 1 : 6

        validateattributes(varargin{k}, {'numeric'}, {'real','scalar'});

    end

    [c1,c2,a,b,phi] = ellipse_explicit(varargin{:});

else

    narginchk(1,1);

    p = varargin{1};

    validateattributes(p, {'numeric'}, {'real','vector'});

    p = p(:);

    validateattributes(p, {'numeric'}, {'size',[6 1]});

    [c1,c2,a,b,phi] = ellipse_explicit(p(1), 0.5*p(2), p(3), 0.5*p(4), 0.5*p(5), p(6));

end

if nargout > 1

    varargout = num2cell([c1,c2,a,b,phi]);

else

    varargout{1} = [c1,c2,a,b,phi];

end

function [c1,c2,semia,semib,phi] = ellipse_explicit(a,b,c,d,f,g)

% Cast ellipse defined with explicit parameter vector to implicit form.

% helper quantities

N = 2*(a*f^2+c*d^2+g*b^2-2*b*d*f-a*c*g);

D = b^2-a*c;

S = realsqrt((a-c)^2+4*b^2);

% semi-axes

ap = realsqrt( N/(D*(S-(a+c))) );

bp = realsqrt( N/(D*(-S-(a+c))) );

semia = max(ap,bp);

semib = min(ap,bp);

% center

c1 = (c*d-b*f)/D;

c2 = (a*f-b*d)/D;

% angle of tilt

if b ~= 0

    if abs(a) < abs(c)

        phi = 0.5*acot((a-c)/(2*b));

    else

        phi = 0.5*pi+0.5*acot((a-c)/(2*b));

    end

else

    if abs(a) < abs(c)

        phi = 0;

    else  % a > c

        phi = 0.5*pi;

    end

end

⛄ 运行结果

【基础教程】基于Matlab实现多种算法的曲线拟合_第1张图片

【基础教程】基于Matlab实现多种算法的曲线拟合_第2张图片

【基础教程】基于Matlab实现多种算法的曲线拟合_第3张图片

⛄ 参考文献

[1]汪宏健. 用MATLAB进行曲线拟合的方法[J]. 铜陵学院学报, 2003, 2(2):3.

[2]王可, 毛志伋. 基于Matlab实现最小二乘曲线拟合[J]. 北京广播学院学报(自然科学版), 2005.

❤️ 关注我领取海量matlab电子书和数学建模资料

❤️部分理论引用网络文献,若有侵权联系博主删除

你可能感兴趣的:(matlab,算法,开发语言)