submyline2.m

来自「直线拟合与多项式拟合 涉及:《数值计算》等相关课程的基础内容 共两个例」· M 代码 · 共 30 行

M
30
字号
function [C,R,dA,dB,dC]=submyline2(x,y)

% [C,R,dA,dB,dC]=submyline2(x,y)  最小二乘法的直线拟合 f(x) = A + Bx
% 输入:   -- x  1xN 的行向量
%          -- y  1xN 的行向量 (x,y)是实验点数据
% 输出:   -- C=A/B
%          -- R  相关系数
%          -- dA  A的误差范围?
%          -- dB  B的误差范围?
%          -- dC  C的误差范围?
%袁怡圃 2003/04/24

xmean=mean(x);
ymean=mean(y);
sumx2=(x-xmean)*(x-xmean)';
sumxy=(x-xmean)*(y-ymean)';
sumy2=(y-ymean)*(y-ymean)';
B=sumxy/sumx2;
A=ymean-B*xmean;
C=A/B;
R=sumxy/sqrt(sumx2*sumy2);
N=length(x);
Q=0;
for i=1:N
    Q=Q+(y(i)-A-B*x(i))^2;
end
S=sqrt(Q/(N-2));
dA=S*sqrt(1/N+xmean^2/sumx2);
dB=S*sqrt(1/sumx2);
dC=sqrt((sumx2-sumxy^2/sumy2)*(1/N+ymean^2/sumy2)/(N-2));

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?