資源簡介
Multinomial re-sampling 多項式重采樣,Residual re-sampling 殘差重采樣,Stratified re-sampling 分層重采樣,Systematic re-sampling 系統(tǒng)重采樣 , regularized re- sampling 正則重采樣算法

代碼片段和文件信息
#include?
#include?
#include?
#include?“resampling.h“
//??重采樣算法,參考:博士論文《粒子濾波算法及其應(yīng)用研究》
//
//?void?re_sampling(int*?outIndexdouble?*wp?int?N)
//?{
//? int?ij;
//? double?*c=(double?*)malloc(N*sizeof(double));
//? double?*u=(double?*)malloc(N*sizeof(double));
//? c[0]=wp[0];
//? for(i=1;i //? c[i]=c[i-1]+wp[i];
//?
//? double?s=1.0/N;
//? double?u1=rand();
//? double?u2=u1/RAND_MAX;
//? u[0]=u2*s;
//? for(i=1;i //? u[i]=u[i-1]+s;
//? i=0;j=0;
//? while(i //? {
//? if?(u[i] //? {
//? outIndex[i]=j;
//? wp[i]=s;
//? i=i+1;
//? }
//? else
//? j=j+1;
//? }
//? free(u);
//? free(c);
//?}
/************************************************************************/
/*?Multinomial?re-sampling???多項式重采樣?,1993,Gordon計算量大
?*?PURPOSE?:?Performs?the?re-sampling?stage?of?the?SIR?in?order(number?of?samples)?steps.
?*??-?wp?=?Normalized?importance?ratios.
?*??-?outIndex?=?Re-sampled?indices.
?*/
/************************************************************************/
void?Multinomial_rsp(int*?outIndexdouble?*wp?int?N)
{
int?ij;
double?*c=(double?*)malloc(N*sizeof(double));
c[0]=wp[0];
for(i=1;i c[i]=c[i-1]+wp[i];
i=0;
while(i {
double?u1=rand();
double?u=u1/RAND_MAX;
j=0;
while?(c[j] j=j+1;
outIndex[i]=j;
wp[i]=1.0/N;
i=i+1;
}
free(c);
}
/************************************************************************/
/*?Residual?re-sampling???殘差重采樣?1993?Liu在多項式重采樣的基礎(chǔ)上提出,
?*?計算量小于多項式重采樣算法
?*?PURPOSE?:?Performs?the?re-sampling?stage?of?the?SIR?in?order(number?of?samples)?steps.?
?*?It?uses?Liu‘s?residual?re-sampling?algorithm?and?Niclas‘?magic?line.
?*??-?wp?=?Normalized?importance?ratios.
?*??-?outIndex?=?Re-sampled?indices.
*/
/************************************************************************/
void?Residual_rsp(int*?outIndexdouble?*wp?int?N)
{
int?ijk;
double?M=(double)?N;
double?sum=0.0;
double?*u=(double?*)malloc(N*sizeof(double));
double?*ws=(double?*)malloc(N*sizeof(double));
double?*c=(double?*)malloc(N*sizeof(double));
for(i=0;i {
u[i]=floor(M*wp[i]);
sum+=u[i];
}
double?N_rdn=M-sum;
for(i=0;i ws[i]=(M*wp[i]-floor(M*wp[i]))/N_rdn;
c[0]=ws[0];
for(i=1;i c[i]=c[i-1]+ws[i];
i=0;
for?(j=0;j {
for(k=0;k<(int)u[j];k++)
{
outIndex[i]=j;
wp[i]=1.0/M;
i=i+1;
}
}
j=0;
while(i {
double?t1=rand();
double?t=t1/RAND_MAX;
while(c[j] j=j+1;
outIndex[i]=j;
wp[i]=1.0/M;
i=i+1;
}
free(c);
free(ws);
free(u);
}
/************************************************************************/
/*?Stratified?re-sampling???分層重采樣,1996,Kitagawa對多項式重采樣進行了改進
*/
/************************************************************************/
void?Stratified_rsp(int*?outIndexdouble?*wp?int?N)
{
int?ij;
double?s=1.0/N;
double?*c=(double?*)malloc(N*size
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????328??2012-03-28?15:42??resampling.h
?????文件???????4704??2012-03-28?16:07??resampling.cpp
?????文件????6583416??2012-03-27?15:55??粒子濾波算法及其應(yīng)用研究.kdh
-----------?---------??----------?-----??----
??????????????6588448????????????????????3
- 上一篇:純EXT圖書管理系統(tǒng)
- 下一篇:智能硬件安全白皮書,供大家參考
評論
共有 條評論