23 #define MeasModel MeasurementModel 24 #define OptImpFilter OptimalImportanceFilter 26 template <
typename SV,
typename MV>
void 27 OptimalImportanceFilter::ConstructProposal(SystemModel<SV>*
const sysmodel,
28 MeasModel<MV,SV>*
const measmodel)
32 if (_proposal == NULL)
35 _proposal =
new ConditionalGaussian(sysmodel->SystemPdfGet());
38 if (_proposal->DimensionGet())
42 template <
typename SV,
typename MV>
43 OptimalImportanceFilter<SV,MV>::OptimalImportanceFilter(MCPdf<SV> * prior,
45 double resamplethreshold,
47 : ParticleFilter<
SV,
MV>(prior, NULL, resampleperiod,
53 template <
typename SV,
typename MV>
54 OptimalImportanceFilter<SV,MV>::~OptimalImportanceFilter()
59 template <
typename SV,
typename MV>
60 OptimalImportanceFilter<SV,MV>::OptimalImportanceFilter(
const OptimalImportanceFilter & filter)
61 : ParticleFilter<
SV,
MV>(filter){}
63 template <
typename SV,
typename MV>
void 64 OptimalImportanceFilter<SV,MV>::Update(SystemModel<SV>*
const sysmodel,
66 MeasModel<MV,SV>*
const measmodel,
72 this->ProposalStepInput(sysmodel,u);
73 this->MeasUpdate(measmodel,z,s);
76 template <
typename SV,
typename MV>
void 77 OptimalImportanceFilter<SV,MV>::Update(SystemModel<SV>*
const sysmodel,
78 MeasModel<MV,SV>*
const measmodel,
83 this->ProposalStep(sysmodel);
84 this->MeasUpdate(measmodel,z,s);
87 template <
typename SV,
typename MV>
void 88 OptimalImportanceFilter<SV,MV>::Update(SystemModel<SV>*
const sysmodel,
89 MeasModel<MV,SV>*
const measmodel,
93 this->ProposalStep(sysmodel);
94 this->MeasUpdate(measmodel,z);
97 template <
typename SV,
typename MV>
void 98 OptimalImportanceFilter<SV,MV>::Update(SystemModel<SV>*
const sysmodel,
100 MeasModel<MV,SV>*
const measmodel,
104 this->ProposalStepInput(sysmodel,u);
105 this->MeasUpdate(measmodel,z);
109 template <
typename SV,
typename MV>
void 110 OptimalImportanceFilter<SV,MV>::Update(SystemModel<SV>*
const sysmodel,
114 this->ProposalStepInput(sysmodel,u);
117 template <
typename SV,
typename MV>
void 118 OptimalImportanceFilter<SV,MV>::Update(SystemModel<SV>*
const sysmodel)
121 this->ProposalStep(sysmodel);
125 template <
typename SV,
typename MV>
void 126 OptimalImportanceFilter<SV,MV>::Update(MeasModel<MV,SV>*
const measmodel,
130 this->MeasUpdate(measmodel,z,s);
133 template <
typename SV,
typename MV>
void 134 OptimalImportanceFilter<SV,MV>::Update(MeasModel<MV,SV>*
const measmodel,
137 this->MeasUpdate(measmodel,z);