> Contrary to the beliefs of some, the MathWorks isn't on high, and MatLab
> isn't an extension of the Bible. I would trust them for examples, but
> don't take their documentation for anything but a means of selling you
> copies of MatLab.
The link I posted is a user contribution, not an example from the
Mathworks, so I don't trust it entirely. However the Wikipedia article
on EKF's seems to show the same formulation with the noise being
assumed to be additive, only the process and measurement models are
allowed to be non-linear:
http://en.wikipedia.org/wiki/Extended_Kalman_filter#Formulation
Does this mean the EKF is not appropriate for my problem or am I
misunderstanding how it works?
> If this is a student project then why not assume there will be a set
> point and the controller will maintain that set point with little
> variation. Now the volume is fixed and the variance is therefore
> fixed. Now you can assume the system is linear around that set point.
I have already implemented a regular Kalman filter simply by
approximating both of the noise terms as additive noise and the
results are okay but not great (another idea I might try is
approximating both of them as multiplicative noise, and then I can do
all the calculations in the log domain). To improve it I want to try
incorporating the multiplicative noise. When z2 terms have smaller
values, we have more confidence in them (less variance), so I want to
explicitly incorporate this into the filter. In particular, when z2
reaches zero, we have almost 100% confidence it is correct.
> I really suggest that you make up a graphical model of the system,
> Simulink or Scicos ( I can deal with Scicos), both the physical system
> and then the proposed filtering.
I'm not too familiar with Simulink or Scicos but here's a small
diagram:
z2
+---------+
| |
======>| |
z1 | |
<====== | |
| |
+---------+
The measurement z1 is measuring the amount going in and out of the
container (flow rate), the measurement z2 is measuring the total
currently in the container (volume). I am trying to find the true
value of x2 (the volume) by combining the noisy measurements of z1 and
z2. Actually there are multiple sensors measuring flow rate and
volume, but I've only shown one of each to simplify the problem. The
z1 measurement has additive Gaussian noise, the z2 measurement has
multiplicative (and possibly additive?) Gaussian noise.
> So your multiplicative noise can be negative? This seems strange.
> In any case, why not simply derive the appropriate filtering from
> scratch instead of trying to find off the shelf solutions? That way
> you can incorporate all the specifics of your problem.
> The EKF propagates first and second moments which is essentially
> treating the problem like it can be approximated like a linear
> Gaussian.
> Particle filters come in various flavors and there are versions that
> can handle multiplicative noise.
I will look into particle filters. Are you aware of any good C++
implementations? (For the Kalman filter I have been using MATLAB to
design and test it, OpenCV to implement it.)