当前位置:网站首页>KF UD分解之伪代码实现进阶篇【2】
KF UD分解之伪代码实现进阶篇【2】
2022-07-06 09:18:00 【Proletarians】
废话不多说,直接上伪代码,matlab版,易于阅读。
基于UD的KF分为两部分:
第一部分实现对残差和v的更新;
第二部分实现对D\U\b三部分的更新。
%% 基于UD分解的KF仿真代码
% ------ Part One Start ------
% 这部分实现 J>1 残差计算和v的更新
for J=n:-1:2
z=z-a(J)*x(J); % residual=delta_z
for K=1:J-1
a(J)=a(J)+U(K,J)*a(K); % f=U^T*a, 赋值后的a(J)就是f
end
v(J)=U(J,J)*a(J);% vi=di*fi
end
% 这部分实现 J=1 残差计算和v的更新
z=z-a(1)*x(1);
v(1)=U(1,1)*a(1);
% ------ Part One Last ------
% ------ Part Two Start------
% 这部分实现 J=1 矩阵D、矩阵U、未加权的KF增益b三部分更新
alpha=r+v(1)*a(1);
gamma=1.0/alpha;
U(1,1)=U(1,1)*r*gamma;
b(1)=v(1);
% 这部分实现 J>1 矩阵D、矩阵U、未加权的KF增益b三部分更新
for J=2:N
beta=alpha; % 将alpha(J-1)代入
alpha=alpha+v(J)*a(J); % 更新alpha(J)
p=-a(J)*gamma; % 将gamma(J-1)代入
gamma=1.0/alpha; % 更新gamma(J)
U(J,J)=U(J,J)*beta*gamma; % 更新D
b(J)=v(J);
for I=1:J-1
beta=U(I,J);
U(I,J)=beta+b(I)*p; % 更新U
b(I)=b(I)+v(J)*beta;% 更新b
end
end
z=z/alpha; % delta_z=delta_z/alpha,即delta_z为加权后的残差
for J=1:N
x(J)=x(J)+b(J)*z; % x_=x+(k)*delta_z=x+(b/alpha)*delta_z,即k=b/alpha,实现了对b的加权
end
% ------ Part Two Last ------
边栏推荐
猜你喜欢
Problèmes avec MySQL time, fuseau horaire, remplissage automatique 0
FairyGUI简单背包的制作
Easy to use shortcut keys in idea
Unity3D,阿里云服务器,平台配置
Halcon knowledge: gray_ Tophat transform and bottom cap transform
Expected value (EV)
ORA-02030: can only select from fixed tables/views
Redis 缓存更新策略,缓存穿透、雪崩、击穿问题
Guided package method in idea
2021.11.10 compilation examination
随机推荐
[offer18] delete the node of the linked list
Lock wait timeout exceeded try restarting transaction
Unity3D摄像机,键盘控制前后左右上下移动,鼠标控制旋转、放缩
[Offer18]删除链表的节点
FairyGUI按钮动效的混用
Combination of fairygui check box and progress bar
JS Title: input array, exchange the largest with the first element, exchange the smallest with the last element, and output array.
Learning notes of JS variable scope and function
[leetcode19] delete the penultimate node in the linked list
idea中导包方法
Fairygui gain buff value change display
Mysqldump error1066 error solution
What is the maximum length of MySQL varchar field
There is no red exclamation mark after SVN update
Classification, understanding and application of common methods of JS array
Générateur d'identification distribué basé sur redis
(5) Introduction to R language bioinformatics -- ORF and sequence analysis
How to add music playback function to Arduino project
(the first set of course design) 1-4 message passing interface (100 points) (simulation: thread)
Basic operations of databases and tables ----- modifying data tables