public RandomVariable perceptionUpdate(RandomVariable aBelief,
String perception)
{
RandomVariable newBelief = aBelief.duplicate();
// one way - use matrices
Matrix beliefMatrix = aBelief.asMatrix();
Matrix o_matrix = _sensorModel.asMatrix(perception);
Matrix updated = o_matrix.times(beliefMatrix);
newBelief.updateFrom(updated);
newBelief.normalize();
return newBelief;
// alternate way of doing this. clearer in intent.
// for (String state : aBelief.states()){
// double probabilityOfPerception= sensorModel.get(state,perception);
// newBelief.setProbabilityOf(state,probabilityOfPerception *
// aBelief.getProbabilityOf(state));
// }
}