用matlab实现递归最小二乘法进行误差辨识时结果一直为0

想用下列代码实现一个利用递归最小二乘法求误差估计的功能,但代码运行后,为什么得到的估计值A全部为0,代码虽能运行,但结果是错的,想请编程方面的专家给指导以下,是代码错误还是其他什么原因导致的此种结果。

t=xlsread('E:\MATLAB\PLF\时间戳数据.xlsx');%读取时间戳文件
[rownum,colnum]=size(t);%读取文件的行数和列数
rownum_1=mod(rownum,42);
B=zeros(42-rownum_1,1);
t1=cat(1,t,B);%将t补全到可以被42整除
[rownum_2,colnum_2]=size(t1);%读取新t1的行数和列数
x_colnum=floor(rownum_2/42);%将每列变为42个数
delta_t=reshape(t1,42,x_colnum); %将数据重塑为42行,colnum_1列的数
theta_0 = 2 * pi/42;
lambda=1;

 %初始化参数估计
sum_delta_t = zeros(42,x_colnum);
omega_bar= zeros(42,x_colnum);
theta = zeros(42,x_colnum);
delta_theta = zeros(42,x_colnum); 
delta_theta_bar = zeros(42,x_colnum); 
delta_theta_g= zeros(size(delta_t)); 
delta_theta_g(:,1)=0;
P= zeros(size(delta_t));
P(:,1)=1;
K= zeros(42,x_colnum);
A= zeros(42,1);

for i = 1:42
    for k=2:colnum_1
    %齿圈误差辨识模型
    if i==42
       sum_delta_t(i,k) =sum(delta_t(1:i,k));   
    else
       sum_delta_t(i,k) = sum(delta_t(i+1:42,k-1)) + sum(delta_t(1:i,k)) ;
    end
    omega_bar(i,k) = 2 * pi / sum_delta_t (i,k);%车轮每转一圈的平均角速度
    theta(i,k) = omega_bar(i,k) * delta_t(i,k);%每个齿角度测量值
    delta_theta(i,k) = theta(i,k)- theta_0 ;%第k圈第i齿的误差测量值
    delta_theta_bar(i,k)=delta_theta_g(i,k-1)-delta_theta(i,k); %估计值与测量值间差距
    K(i,k) = P(i,k-1)/(P(i,k-1) + lambda); %计算增益矩阵
    delta_theta_g(i,k) =delta_theta_g(i,k-1) + K(i,k)*delta_theta_bar(i,k); %更新参数估计
    P(i,k) = (P(i,k-1) - K(i,k)*P(i,k-1))/lambda; %更新协方差矩阵
    if abs(delta_theta_g(i,k)-delta_theta_g(i,k-1))<1e-6 && sum(delta_theta_g(:,k))==0
        A(:,k)=delta_theta_g(:,k);
    end
    end
end

你把结果发给我看一下吧