📄 residualr.m
字号:
function outIndex = residualR(inIndex,q);% PURPOSE : Performs the resampling stage of the SIR% in order(number of samples) steps. It uses Liu's% residual resampling algorithm and Niclas' magic line.% INPUTS : - inIndex = Input particle indices.% - q = Normalised importance ratios.% OUTPUTS : - outIndex = Resampled indices.% AUTHORS : Arnaud Doucet and Nando de Freitas - Thanks for the acknowledgement.% DATE : 08-09-98if nargin < 2, error('Not enough input arguments.'); end[S,arb] = size(q); % S = Number of particles.% RESIDUAL RESAMPLING:% ====================N_babies= zeros(1,S);% first integer partq_res = S.*q'; %'N_babies = fix(q_res);% residual number of particles to sampleN_res=S-sum(N_babies);if (N_res~=0) q_res=(q_res-N_babies)/N_res; cumDist= cumsum(q_res); % generate N_res ordered random variables uniformly distributed in [0,1] u = fliplr(cumprod(rand(1,N_res).^(1./(N_res:-1:1)))); j=1; for i=1:N_res while (u(1,i)>cumDist(1,j)) j=j+1; end N_babies(1,j)=N_babies(1,j)+1; end;end;% COPY RESAMPLED TRAJECTORIES: % ============================index=1;for i=1:S if (N_babies(1,i)>0) for j=index:index+N_babies(1,i)-1 outIndex(j) = inIndex(i); end; end; index= index+N_babies(1,i); end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -