dls.m

来自「最小二乘法中的递推最小二乘法」· M 代码 · 共 34 行

M
34 行
字号
function[n_die,theta,ef]=DLS(N,n,In,Out)
%n_die为迭代次数
%e为停机时的准则
%ef为迭代过程中的误差
theta=[0.0001 0.0001 0.0001 0.0001 0.0001]';
%thetaN=[-0.5 0.7 0 0.2 -0.1]';
e=0.000001;
P=10^6*eye(5);
for i=1:N;
    for j=1:n;
        if(i-j>0)
        x(i,j)=-Out(i-j);
        else x(i,j)=0;
        end
    end
    for k=(n+1):(2*n+1)
        if(i-k+n+1>0)
        x(i,k)=In(i-k+n+1);
        else x(i,k)=0;
        end
    end
    thetaN=theta;
    r=inv(1+x(i,:)*P*x(i,:)');
    theta=theta+P*x(i,:)'*r*(Out(i)-x(i,:)*theta);
    P=P-P*x(i,:)'*r*x(i,:)*P;  
    ef(i)=norm(theta-thetaN)/norm(thetaN);
    if(ef(i)<e)
        n_die=i;
        break;
    end
    n_die=N;
end

⌨️ 快捷键说明

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