1 function [estimate_next, covariance_sqrt] =
update_phase(R_root,P_root,C,estimate,measurement)
2 %runs update portion of the EKF
3 %[estimate_next,covariance_sqrt] =
ddekf_update_phase(R_root,P_root,C,estimate,measurement)
5 % R_root:sensor error covariance matrix where
8 % P_root:covariance matrix from the predict phase 9 % P_predict = P_root*(root')
11 % C: observation matrix
13 % estimate: estimate from predict phase
15 % measurement: measurement picked up by sensor
18 % covariance_sqrt: square root of covariance at the
19 % end of update phase. Actual covariance is
20 % covariance_sqrt*(covariance_sqrt
') 22 measurement_count = size(C,1); 23 state_count = size(C,2); 25 tmp = zeros(state_count+measurement_count, state_count+measurement_count); 26 tmp(1:measurement_count,1:measurement_count) = R_root; 27 tmp(1:measurement_count,(measurement_count+1):end) = C*P_root; 28 tmp((1+measurement_count):end,(1+measurement_count):end) = P_root; 33 X = R(1:measurement_count,1:measurement_count); 34 Y = R((1+measurement_count):end,(1:measurement_count)); 35 Z = R((1+measurement_count):end,(1+measurement_count):end); 37 %Kalman_gain = Y*inv(X); 38 estimate_next = estimate + Y*(X\(measurement - C*estimate)); function update_phase(in R_root, in P_root, in C, in estimate, in measurement)
function ddekf_update_phase(in R_root, in P_root, in C, in estimate, in measurement)