matlab 线性函数的拟合 不要用toolsbox 和 GUI,拟合两组数据X和Y,分别拟合Y=a*X+b和y=ax^2+bx+c

x=[0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10];
y=[5.8 4.7 10.3 13.9 18.6 21.2 24.1 32.0 45.1 47.4 62.1 69.9 84.5 89.0 104.6 115.5 136.7 144.3 166.5 183.8 202.0];

拟合代码:

x=[0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10];

y=[5.8 4.7 10.3 13.9 18.6 21.2 24.1 32.0 45.1 47.4 62.1 69.9 84.5 89.0 104.6 115.5 136.7 144.3 166.5 183.8 202.0];

p1=polyfit(x,y,1)

p2=polyfit(x,y,2)

f1 = polyval(p1,x);

f2 = polyval(p2,x);

figure;hold on;

plot(x,y,'k*');

plot(x,f1,'r');

plot(x,f2,'b');

legend('原始数据','一阶拟合','二阶拟合');


拟合效果图:


拟合结果:

p1 =

   19.5083  -22.2082

p2 =

    1.7655    1.8536    5.7450

追问

能不使用ployfit么,要最原始的数学方法~谢谢了

追答

那你就得查查最小二乘法的具体原理啦

温馨提示:内容为网友见解,仅供参考
无其他回答

如何使用matlab 2014a 做数据曲线拟合
选择数据集,然后通过下拉菜单“Type of fit”选择拟合曲线的类型,工具箱提供的拟合类 型有:Custom Equations:用户自定义的函数类型 Exponential:指数逼近,有2种类型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1*cos(x*w) + b1*sin...

matalab根据点的坐标拟合曲线
y=x+1+2*rand(size(x)); %这里是线性函数再加上一些随机的噪音 plot(x,y,'*')然后从图中,我们得有一个拟合的模型。这个模型通常是:线性模型,多项式,正余弦,指对数等。。记得:一定得先有模型,才能拟合。像上面这样,我们用线性模型。线性模型的一般表达式是:y=ax+b 这里我们只有a...

MATLAB的fittype函数的非线性拟合未知参数
曲线拟合是数学分析和数据科学中的基础技术,其核心在于构造一个函数以逼近给定的数据集,使得该函数与数据集之间的误差达到最小。非线性拟合是曲线拟合的一种形式,适用于数据集形状不能用线性模型准确描述的情况。MATLAB提供的fittype函数是实现非线性拟合的重要工具。在使用fittype函数之前,我们需要了解其基...

数据如何拟合线性函数
要拟合数据到线性函数,可以使用最小二乘法。最小二乘法的目标是找到一条直线,使得所有数据点到直线的距离平方和最小。具体步骤如下:1. 收集数据:首先需要收集一组有关于自变量和因变量的数据。2. 构建模型:假设自变量(x)和因变量(y)之间存在线性关系,可以建立如下的线性模型:y = mx + b,...

急需matlab知道两组数据怎么求出它们之间的规律然后拟合成曲线?我刚接...
非线性最小二乘拟合:非线性最小二乘拟合 c=lsqcurvefit(Fun,c0,x,y) Fun为两变量函数f(c,x),c0为参数c的近似值,作为迭代初值,x,y为数据向量 c=lsqcurve(Run,c0,x,y,lc,uc,options,p1,p2,...)可以设置参数c取值于区间[lc,uc],options为 优化计算参数选项,p1,p2,...为向函数Fun传递...

知道一组数据,如何用matlab的线性回归和线性拟合求出两者的关系函数,求...
X=[x x.^2 x.^3];a= regress(y,X);2、用matlab的线性拟合求函数关系,可以用lsqcurvefit函数。fun=@(a,x)a(1)*x+a(2)*x.^2++a(3)*x.^3 x0=[230 -0.3 0];a = lsqcurvefit(fun,x0,x,y);3、线性函数方程,y=231.3102056*x-0.2294924531*x²+0.00005692307356*...

如何使用matlab拟合指数分布函数
首先在Matlab的命令行输入两个向量,一个向量是你要的x坐标的各个数据,另外一个是你要的y坐标的各个数据。输入以后假定叫x向量与y向量,可以在workspace里面看见这两个向量,要确保这两个向量的元素数一致,如果不一致的话是不能在工具箱里面进行拟合的。例如在命令行里输入下列数据:x=(0:0.02:0....

matlab 多元非线性函数拟合
于是[log(a) b c]'=[1 log(x1) log(x2)]\\log(y)这样就可以得到a,b,c了。不需要进行非线性拟合。下面是程序:(对于x1、x2、y的赋值部分这里就不写了,你自己在前面加上即可)p=[ones(length(y),1) log([x1 x2])]\\log(y);%就这一句话就搞定了 a=exp(p(1)),b=p(2),c...

求助用matlab拟合动力学方程
用matlab拟合方程的最基本的要求要有一定数量的有效数据(一般要10组以上),才能进行拟合。拟合过程:1、数据 x=[。。。];y=[。。。];2、自定义模型函数(如动力学方程的一般表达式)func=@(x) 函数表达式 3、初定x0的初值,如x0=[0,0]4、对于拟合函数是非线性函数,一般用lsqcurvefit()或...

如何用matlab拟合三维面图的函数式,z=x和y的函数?
1、根据数据,预测掺量x、龄期y与强度z的关系可以用下列数学模型来表达,即 Z=a1+a2*X^a3+a4*Y^a5 2、因该数学模型为非线性函数,可以利用matlab的lsqcurvefit()函数来拟合a1、a2、a3、a4、a5等系数 3、根据拟合后得到的系数,计算出新的Z1值 4、比较Z、Z1值,判断其相关性,即相关系数R...

相似回答