DSPRelated.com
Forums

Re: Kalman filtering with multiplicative noise

Started by RRogers July 23, 2008
On Jul 23, 1:02 am, d...@myallit.com wrote:
> > 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. > > No I suppose it should always should be positive, I have uploaded an > example image to help clarify: > > http://picasaweb.google.com.au/dspmyallit/ExampleVolumeMeasurements/p... > > > 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.)
> 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. > > No I suppose it should always should be positive, I have uploaded an > example image to help clarify: > > http://picasaweb.google.com.au/dspmyallit/ExampleVolumeMeasurements/p...
Example? Where did this data come from? If it's experimental data, can you post the raw numbers. I can characterize it if you want. RayR