• 大小: 5KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: SOC  

资源简介

双卡尔曼滤波算法是基于卡尔曼滤波算法的一个二级结构算法。第一步使用了卡尔曼滤波算法,用电池电压来修正SOC,然后将修正后的SOC作为第二个卡尔曼滤波算法的输入,对安时积分法得到的SOC进行修正,最终得到双卡尔曼滤波算法SOC估计值。结合EKF算法和安时积分法的优点,能够得到更稳定、更精确的估计结果。

资源截图

代码片段和文件信息

function A = DEKF(yp)
%Dual Extended Klman Filter (DEKF) for MVAR parameter estimation
%
% Arguments:
% A: Estimated time-varying parameters A = [A1 A2 ... Ar]
% y: (CH x LEN) data matrix
% p: Model order


% References:
% [1] E. A. Wan and A. T. Nelson 揘eural dual extended Kalman filtering: applications in speech 
% enhancement and monaural blind signal separation?in Neural Networks for Signal Processing 
% of the 1997 IEEE Workshop 1997 pp. 466-475.

% [2] E. A. Wan and A. T. Nelson “Dual Extended Kalman Filter Methods“ Kalman Filtering and 
% Neural Networks pp. 123-173: John Wiley & Sons Inc. 2002.

% [3] S. Haykin Kalman Filtering and Neural Networks p.^pp. 304: John Wiley and Sons 2001.


% See also: ‘Linear Kalman Filter‘ MATLAB implementation written by Amir Omidvarnia available at:
% http://www.mathworks.com/matlabcentral/fileexchange/29127-linear-kalman-filter

% Written by: Amir Omidvarnia

%% 
CH = size(y1);                            % Number of states (here CH = N)
LEN = size(y2);                           % Number of the multivariate observations

%% Initial parameters for Dual Extended Kalman Filter
%%%%% (EKF 1)
xh = zeros(CH*pLEN);                      % (EKF 1) Initial a-posteriori states (Mp x 1)
Px = .1*eye(CH*p);                         % (EKF 1) Initial a-posteriori state covariance matrix
R = eye(CH);
B = zeros(CH*pCH);                        % (EKF 1) Relationship between states and the process noise ( x(k) = F[x(k-1)] + B*v(k) )
B(1:CH:) = eye(CH);                       % (EKF 1) B = [I 0 ... 0]‘

%%%%% EKF 2
Pa = eye(CH*CH*p);                         % (EKF 2) Initial a-posteriori parameters covariance matrix
Ah = zeros(CH*pCH*pLEN);                 % (EKF 2) Initial a-posteriori parameters estimates (matrix form of ‘ah‘ plus identity matrices)
Ah(1:CH1:CH*pp) = .1*randn(CHCH*p);     % (EKF 2) Initial a-posteriori parameters estimates (matrix form of ‘ah‘ plus identity matrices)
for r = 2 : p
    Ah((r-1)*CH+1:r*CH(r-2)*CH+1:(r-1)*CH p) = eye(CH);
end

for r = 1 : p
    xh((r-1)*CH+1:r*CHp+1) = y(:p-r+1);
end

%%%%% Mutual variables between EKF 1 and DEKF 2
Q = 10*eye(CH);                            % (EKF 12) Initial process noise covariance matrix
C = B‘;                                    % (EKF 12) Measurement matrix (identity matrix C = B‘)

%% DEKF starts ....
for i = p+1 : LEN
        
    [J_x J_A] = MVAR_JacCSD(Ah(::i-1)xh(:i-1)p);  % xh(k) = F(A(k-1) * xh(k-1)) = Ah(k-1) * xh(k-1)
    Ah_ = Ah(::i-1);                                 % Ah_(k) = Ah(k-1)

    %% EKF 1 ---> States estimation    
    %---------- Time Update (EKF1) ----------
    Rv = B * Q * B‘;                          % According to Haykin‘s book
    xh_ = Ah_ * xh(:i-1);                    % xh_(k) = A_h(k-1) * xh(k-1)
    Px_ = J_x * Px * J_x‘ + Rv;               % Px_(k) = A_h(k-1) * Px(k-1) * A_h(k-1)‘ + B * Q * B‘
    
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-11-21 19:18  DEKF_Mathworks\
     文件        4675  2011-11-21 16:30  DEKF_Mathworks\DEKF.m
     文件        2055  2011-11-21 16:05  DEKF_Mathworks\MVAR_JacCSD.m
     文件        1949  2011-11-21 16:42  DEKF_Mathworks\TVMVAR_Estimation_script.m
     文件        1536  2011-11-21 04:32  license.txt

评论

共有 条评论