function[ residual,estimate ]=ghk_tracker
(X0,smoocof,inp, npts, T, nvar)
rn = 1. ;  % 状态向量赋初值
X = X0 ;
theta = smoocof ; % 计算αβγ的值
w1 = 1. - (theta^3) ;
w2 = 1. 5 * (1. + theta) * ( (1. - t heta)^2) /T ;
w3 = ( (1. - theta)^3) / ( T^2) ;
% 装入状态转移矩阵PHI
PHI = [ 1. T ( T^2) / 2. ;0. 1. T ;0. 0. 1. ] ;
while rn < npts ; % 用状态转移矩阵预测下一状

  XN = PHI * X;
 error = (inp ( rn) + normrnd (0 ,nvar) ) - XN
(1) ;
 residual ( rn) = error ;
 tmp1 = w1 * error ;
 tmp2 = w2 * error ;
 tmp3 = w3 * error ; % 预测下一状态
 X(1) = XN (1) + tmp1 ;
 X(2) = XN (2) + tmp2 ;
 X(3) = XN (3) + tmp3 ;
 estimate ( rn) = X(1) ;
 rn = rn + 1. ;
end
return






X0       --初始状态向量              输入
smoocof  --期望的平滑系数            输入
inp      --测量的目标位置数据序列    输入
npts     --测量的目标位置数据个数    输入
T        --采样周期                  输入
nvar     --期望的噪声方差            输入
residual --残留误差                  输出
estimate --预测的目标位置数据        输出


数据:
inp=1+t^3+5t^2+5cos(2πt)
smoocof=0.9
nvar=0
T和npts,自己设置,可以是T=60,npts=40
X0不知应该赋多少,程序里说X0=1.

每次运行,错误总在(X0,smoocof,inp, npts, T, nvar)

请大家帮帮忙。