✅作者简介:热爱科研的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
⛄ 运行结果
⛄ 参考文献
[1]汪宏健. 用MATLAB进行曲线拟合的方法[J]. 铜陵学院学报, 2003, 2(2):3.
[2]王可, 毛志伋. 基于Matlab实现最小二乘曲线拟合[J]. 北京广播学院学报(自然科学版), 2005.