lrest.m

来自「这是一个用于语音信号处理的工具箱」· M 代码 · 共 59 行

M
59
字号
%FUNCTION: find the linear regression estimates by the least squares method
function out=lrest(x,y,order,show);

% INPUT: x==source values
%        y==target values
%        order == the linear function order
%        show == plot the linear line 
% OUTPUT: out==[b0 b1 de], for the linear mapping function y=b0+b1*x
%         sse==standard deviation for erroe 
%         2.0*db0 95% confidence interval for b0 ( +-t standard error estimate)
%         2.0*db1 95% confidence interval for b1
%%%

if nargin<3
   order=1;
   show=0;
elseif nargin<4
   show=0;
end

n=length(x);

mx=mean(x);
my=mean(y);

sxx=sum((x-mx).^2);
sxy=sum((x-mx).*(y-my));

if order==0

   b1=1;
   b0=my-mx;

elseif order==1
   if sxx==0
      b1=1;
   else
      b1=sxy/sxx;   %estimate for b1
   end

   b0=my-b1*mx;  %estimate for b0
end

sse=sum((y-b0-b1*x).^2);             %sum of squares for error
de=sqrt(sse/(n-2));         %standard deviation for error
%db0=de*sqrt( sum(x.^2)/n/sxx );  %standard deviation for b0
%db1=de/sqrt(sxx);             %standard deviation for b1

out=[b0 b1 de];


if show==1
    plot(x,y,'y*',x,b0+b1*x,'r-')
    title(['Linear Regression Estimates (Std= ' num2str(de) ')']);
    xlabel('Soucre');
    ylabel('target');
    drawnow;
end

⌨️ 快捷键说明

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