粒子滤波随机采样算法

粒子滤波随机采样算法
重采样思想:
通过对样本重新采样,大量繁殖权重高的粒子,淘汰权值低的粒子,从而抑制退化。
重采样前各个粒子对应权重为 ,经过重采样后,粒子总数保持不变,权值大的粒子分成多个粒子,权值特别小的粒子则被抛弃。这样,重采样后每个粒子权值相同,均为1/N。
随机重采样:利用分层统计的思想,将区间[0,1]分成相互独立的N层,设U是[0,1]区间上的均匀分布随机变量,现由U产生一个随机数,根据随机数落在何区间,响应区间对应的随机变量就是所需的输出量。(本质:将权重大的粒子经过重采样后其在权重体现在索引的多少上,权重大的多次索引,小的可能被抛弃)
在这里插入图片描述
上面的一行是随机粒子对应代码 u=sort(u);
下面一行对应cdf

在这里插入代码片function randomR_test
N=10;
A=[2,8,2,7,3,5,5,1,4,6];
IndexA=1:N;
W=A./sum(A);
OutIndex=randomR(W);
NewA=A(OutIndex);
NewA
W=NewA./sum(NewA);
OutIndex=randomR(W);
NewA2=NewA(OutIndex);
NewA2
W=NewA2./sum(NewA2);
OutIndex=randomR(W);
NewA3=NewA2(OutIndex);
NewA3
figure
subplot(2,1,1);
plot(A,'--ro','MarkerFace','g');
axis([1,N,1,N]);
subplot(2,1,2);
plot(NewA,'--ro','MarkerFace','g');
axis([1,N,1,N]);

    function outIndex=randomR(weight)
        L=length(weight);
        outIndex=zeros(1,L);
         
        u=unifrnd(0,1,1,L);
        u=sort(u);%升序排列
        cdf=cumsum(weight);
        i=1;
        for j=1:L
            while (i<=L)&(u(i)<=cdf(j))
                outIndex(i)=j;
                i=i+1;
            end
        end
        outIndex
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值