avatar
fireworks99
keep hungry keep foolish

Recursive least square

给定一组样本点:

求拟合函数 使得 取最小值。

是n+1个线性无关的连续函数, 是由 的所有线性组合构成的集合,记

写成矩阵的形式:

所求的 满足如下条件 :

以矩阵形式表示如下:

(表示有 组样本点时对应的 个参数)

其中,

目标:

进行推导变换:

,则 .

.

function Ak = nafit1( A, x, xk, yk, m)
Pni=inv(P(x,m));
phik2phik=phi(xk,m);
phi2y=phiy(xk, yk, m);
Ak=A'-Pni*phik2phik*A'+Pni*phi2y;
Ak=fliplr(Ak');
end

function phi2y = phiy(xk, yk, m)
phi2y = zeros(m+1, 1);
for i=0:m
    phi2y(i+1)=xk^i*yk;
end
end

function phik2phik = phi(xk, m)
phik2phik = zeros(m+1, m+1);
for i=0:m
    for j=0:m
        phik2phik(i+1,j+1)=xk^(i+j);
    end
end
end

function Pres = P(x, m)
len = length(x);
Pres = zeros(m+1, m+1);
for k=1:len
    Pres = Pres + phi(x(k), m);
end
end

代码的使用方法

code

Site by Baole Zhao | Powered by Hexo | theme PreciousJoy