📄 systematicr.m
字号:
function outIndex = systematicR(inIndex,wn);
% PURPOSE : Performs the resampling stage of the SIR
% in order(number of samples) steps. It uses the
% systematic sampling scheme of Carpenter and Clifford.
% INPUTS : - inIndex = Input particle indices.
% - wn = Normalised importance ratios.
% OUTPUTS : - outIndex = Resampled indices.
% AUTHORS : Arnaud Doucet and Nando de Freitas - Thanks for the acknowledgement.
% DATE : 08-09-98
if nargin < 2, error('Not enough input arguments.'); end
wn=wn';
[arb,N] = size(wn); % N = Number of particles.
% SYSTEMATIC RESAMPLING:
% ====================
N_children=zeros(1,N);
label=zeros(1,N);
label=1:1:N;
s=1/N;
auxw=0;
auxl=0;
li=0; % Label of the current point
% Initialisation
T=s*rand(1);
j=1;
Q=0;
i=0;
% Sampling before
u=rand(1,N);
while (T<1)
if (Q>T)
T=T+s;
N_children(1,li)=N_children(1,li)+1;
else
% select i uniformly between j and N
i=fix((N-j+1)*u(1,j))+j;
% save the associate characteristic
auxw=wn(1,i);
li=label(1,i);
% update the cfd
Q=Q+auxw;
% swap
wn(1,i)=wn(1,j);
label(1,i)=label(1,j);
%wn(1,j)=auxw;
%label(1,j)=li;
j=j+1;
end
end
% COPY RESAMPLED TRAJECTORIES:
% ============================
index=1;
for i=1:N
if (N_children(1,i)>0)
for j=index:index+N_children(1,i)-1
outIndex(j) = inIndex(i);
end;
end;
index= index+N_children(1,i);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -