线性拟合
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% 注意:在进行线性拟合之前,必须要具备两个条件
% (1)数据点
% (2)要进行拟合的函数模型,不同的函数模型拟合出来的效果不一样
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% 方法一
%这里的拟合函数模型是ff1 * term1 + coeff2 * term2 + coeff3 * term3 +...
%数据点为x与y矩阵
x=[1,1.5,2,2.5,3];
y=[0.9,1.7,2.2,2.6,3];
% p = polyfit(x,y,n)
% 有一组y,和一组x,拟合成一个一元N次多项式
p=polyfit(x,y,1);
% linspace用于产生x1,x2之间的N点行线性的矢量,其中x1、x2、N分别为起始值、终止值、元素个数。若默认N,默认点数为100。
% 这里min(x) = 1,max(x) = 3,所以会产生1到3逐步递增的100个点
x1=linspace(min(x),max(x));
% y=polyval(p,x):计算多项式的函数值。返回在x处多项式的值,p为多项式系数,元素按多项式降幂排序。
% 这里的p是求得的拟合函数的相关系数
y1=polyval(p,x1);
% 绘图,给定的数据点和拟合的函数的图
plot(x,y,'*',x1,y1);
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% 方法二
% 这里的x和y矩阵为数据点
% 拟合的拟合函数模型默认为直线
% 注意x和y是列矩阵
x=[1;1.5;2;2.5;3];
y=[0.9;1.7;2.2;2.6;3];
p=fittype('poly1');
f=fit(x,y,p);
plot(f,x,y);
运行结果:
非线性拟合
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% 注意:在进行线性拟合之前,必须要具备两个条件
% (1)数据点
% (2)要进行拟合的函数模型,不同的函数模型拟合出来的效果不一样
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% x和y矩阵是数据点
% 要拟合的函数模型是y=a*x^2+b*x+c
x=[3.2,3.6,3.8,4,4.2,4.8,5,5.4,6.2,6.4,6.6,6.9,7.1]';%注意x和y是列矩阵
y=[0.38,0.66,1,0.77,0.5,0.66,0.83,1,0.71,0.71,1,0.87,0.83]';
% fittype('要拟合的函数模型','independent','自变量','coefficients',{'相关系数1','相关系数2','相关系数3',...,'相关系数n'})
% p的输出是一个函数模型,比如这里的p输出是:p(a,b,c,x) = a*x.^2+b*x+c
p=fittype('a+b.*exp(-x)','independent','x','coefficients',{'a','b'});
% f(自变量,因变量,函数),输出为函数的相关系数
f=fit(x,y,p);
% 画出所给的数据的散点图和拟合的函数图
plot(f,x,y);
运行结果:
资源来自网络。