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;

参考文献

吴平,大学物理实验教程,机械工业出版社