chenmh_particle.m

来自「Frequently used algorithms for numerical」· M 代码 · 共 46 行

M
46
字号
function mean_val = Chenmh_Particle(x,A,H,Q,C);
N = 200; M = 5;
[xd,T] = size(x);
sd = size(A,1);
U = Chenmh_Gaussian(N,zeros(sd,1),10^2*eye(sd));
w = 1/N*ones(1,T);
mean_val = [];
for t = 1:T
    U_temp = []; w_temp = [];
    for i = 1:N
        U_temp = [U_temp, Chenmh_Gaussian(M,Chenmh_Evolve(U(:,i),A),Q)];
    end
    for j = 1:size(U_temp,2)
        w_temp = [w_temp, Chenmh_normpdf(x(:,t),Chenmh_Transfer(U_temp(:,j),H),C)];
    end
    w_temp = w_temp/sum(w_temp);
    
    %% Resampling.
    U = [];
    w_cum = cumsum(w_temp);
    for i = 1:N
        value = rand(1);
        k = 1;
        while value>w_cum(k)
            k = k + 1;
        end
        U = [U, U_temp(:,k)];
    end
    mean_val = [mean_val, U*ones(N,1)/N];
end
       



function s_new = Chenmh_Evolve(s_old,A);
s_new = A*s_old;


function x = Chenmh_Transfer(s,H);
x = H*s;

function pp = Chenmh_normpdf(x,mu,Sigma)
d = length(x);
pp = exp(-0.5*(x-mu)'*Sigma^-1*(x-mu))*((2*pi)^d*det(Sigma))^-0.5;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?