matlab 做直线

来源:百度知道 编辑:UC知道 时间:2024/08/21 22:48:33
r=[8.22,7.41,6.58,5.49,5.20];
u=[1.80,1.45,1.20,0.43];
我想以r为x轴,u为y轴;
拟合一条直线,保证最多的点在这条直线上(或者点在这条直线周围均匀分布)
不好意思,漏了一个数据。不过关系不大,哈。
谢谢大家的回答。

[1]首先楼主你r,u不匹配(必须成对,也就是r,u元素个数一样多) 数据你可以自己随便更改
令y=a+bx是你要拟合的直线
请打开MATLAB,输入如下内容,逐行输入或者M-文件编辑都可以
x=[8.22,7.41,6.58,5.49,5.20];
y=[1.80,1.45,1.20,0.43,0.5];
r=x;
u=y;
b=(mean(x).*mean(y)-mean(dot(x,y)))./((mean(x))^2-mean(x.^2));
a=mean(y)-b.*mean(x);
在我这个数值下b = 24.1981 a = -158.1472
显然在楼主你更改数值以后结果会不同
划线可以用plot函数 plot(x,a+b.*x)
〔2〕原理是最小二乘法,任何一本高等数学书或者大学物理实验都有它的详细内容
〔3〕函数是自己编的,应该是一元线形回归(直线拟合)条件下通用的。

虽然自认为对matlab还是很熟悉的,不过楼主的问题已经超出我的能力范围了。

用最小二乘法。。。。
应该有函数。。。

plot(r,u)

搞什么?r有5个点,u只有4个点?还差1个点丢哪了?