pretreat.m
来自「基于kalman滤波器的信息融合 用MATLAB应用举例实现」· M 代码 · 共 32 行
M
32 行
function [PreP] = Pretreat(F, H, Q, K, Vfilt, J, An, Spre, S, R, W)
[ss,os,T,L] = size(K);
I = eye(ss);
%for i = 1:L
% for j = 1:L
% init_P(:,:,i,j) = Vfilt(:,:,1,i);
% end
%end
%init_P = 0.1*eye(ss);
for t = 1:T
for i = 1:L
for j = 1:L
if i == j
PreP(:,:,t,i,i) = Vfilt(:,:,t,i);
else
if t == 1
%PreP(:,:,1,i,j) = [I - K(:,:,t,i)*H(:,:,i)]*[An(:,:,t,i)*init_P*An(:,:,t,j)' + W*Q*W' - J(:,:,t,j)*R(:,:,j)*J(:,:,t,j)' - J(:,:,t,i)*R(:,:,i)*J(:,:,t,i)' + J(:,:,t,i)*Spre(i,j)*J(:,:,t,j)' + An(:,:,t,i)*K(:,:,t,i)*[Spre(i,j)*J(:,:,t,j)' - S(:,:,i)'*W'] + [J(:,:,t,i)*Spre(i,j) - W*S(:,:,j)]*K(:,:,t,j)'*An(:,:,t,j)']*[I - K(:,:,t,j)*H(:,:,j)]' + K(:,:,t,i)*Spre(i,j)*K(:,:,t,j)';
%PreP(:,:,1,i,j) = [I - K(:,:,t,i)*H(:,:,i)]*[An(:,:,t,i)*init_P(:,:,i,j)*An(:,:,t,j)' + W*Q*W' - J(:,:,t,j)*R(:,:,j)*J(:,:,t,j)' - J(:,:,t,i)*R(:,:,i)*J(:,:,t,i)' + J(:,:,t,i)*Spre(i,j)*J(:,:,t,j)' + An(:,:,t,i)*K(:,:,t,i)*[Spre(i,j)*J(:,:,t,j)' - S(:,:,i)'*W'] + [J(:,:,t,i)*Spre(i,j) - W*S(:,:,j)]*K(:,:,t,j)'*An(:,:,t,j)']*[I - K(:,:,t,j)*H(:,:,j)]' + K(:,:,t,i)*Spre(i,j)*K(:,:,t,j)';
PreP(:,:,1,i,j) = Vfilt(:,:,1,i);
else
PreP(:,:,t,i,j) = [I - K(:,:,t,i)*H(:,:,i)]*[An(:,:,t,i)*PreP(:,:,t-1,i,j)*An(:,:,t,j)' + W*Q*W' - J(:,:,t,j)*R(:,:,j)*J(:,:,t,j)' - J(:,:,t,i)*R(:,:,i)*J(:,:,t,i)' + J(:,:,t,i)*Spre(i,j)*J(:,:,t,j)' + An(:,:,t,i)*K(:,:,t,i)*[Spre(i,j)*J(:,:,t,j)' - S(:,:,i)'*W'] + [J(:,:,t,i)*Spre(i,j) - W*S(:,:,j)]*K(:,:,t,j)'*An(:,:,t,j)']*[I - K(:,:,t,j)*H(:,:,j)]' + K(:,:,t,i)*Spre(i,j)*K(:,:,t,j)';
end
end
end
end
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?