matlab处理大学物理实验数据程序之最小二乘法
Tag:自己写的一个程序,原始发布地址在:matlab处理大学物理实验数据程序之最小二乘法
以前自己根据公式写的,批改实验报告方便,也是以前在百度发布过的老文,如有转载,请注明出处。
——by realasking
代码
function [a,b,r,ua,ub]=line_fit(C,D)
%最小二乘法拟合y=ax+b直线,并计算a、b的A类不确定度
%程序编制:realasking
%个人博客:http://hi.baidu.com/realasking
%输入变量:C、D,两个列向量,分别是x,y
%输出变量:a,b,r,ua,ub,r是残差
tmp=(sum(C)^2)-size(C,1)*sum(C.^2);
b=(sum(C.*D)*sum(C)-sum(D)*sum(C.^2))/tmp;
a=(sum(C)*sum(D)-size(C,1)*sum(C.*D))/tmp;
r=D-(a*C+b);
sy=sqrt(sum(r.^2)/(size(C,1)-2));
sa=sy/sqrt(sum((C-mean(C)).^2));
sb=sy*sqrt(((mean(C)^2)/(sum((C-mean(C)).^2))+(1/size(C,1))));
t=[1 12.7;
2 4.3;
3 3.18;
4 2.78;
5 2.57;
6 2.45;
7 2.36;
8 2.31;
9 2.26;
10 2.23;
15 2.13;
20 2.09;
21 1.96]
if(size(C,1)<=10)
tt=t(size(C,1),2);
elseif(size(C,1)<=15)
tt=t(10,2)+((t(11,2)-t(10,2))*((size(C,1)-10)/(15-10)));
elseif(size(C,1)<=20)
tt=t(11,2)+((t(12,2)-t(11,2))*((size(C,1)-15)/(20-15)));
else
tt=t(13,2);
end
ua=tt*sa;
ub=tt*sb;
参考文献
吴平,大学物理实验教程,机械工业出版社