gusucode.com > 用粒子滤波算法进行跟踪的matlab代码 > gmm_utilities/Notes.txt

    GMM Utilities
-------------

For GMMs and Gaussian kernels, we want the following operations:

1. Evaluate at a point.
2. Draw samples from.
3. Linear Transform.
4. Multiply.
5. Divide.
6. Kalman update (projective multiply).
7. Convolve.

Reduction:

1. Truncate.
2. Join.
3. Cluster.

Distance measures:

1. Mahalanobis.
2. Bhattacharyya.
3. Kullback-Leibler divergence (relative entropy).
4. Renyi divergence.

Improvements
------------
- Remove loops
- implement as log-likelihoods where possible to increase numerical stability. For example, gmm_evaluate could take log-weights, normalise them so their mean is 0, convert to normal weights, add them, convert to log-weights and subtract normaliser.
- perhaps make logflag an optional member of each GMM
- incorporate checking for numerical errors
- check everything works for 1-D single Gaussians, N-D single Gaussians and 1-D N Gaussians

Alternatives
------------

Kernel join-merge:
 1 - Keep original kernel.
 2 - Adjust kernel at end: P = P + P1 - P2; where P1 and P2 are the original and final ensemble variances, respectively.
 3 - Adjust kernel at each iteration (Matt Ridley): P = P + ...?
	- + P_k+1 - P_k; where these are the ensemble variances between iterations
	- + w.*xerr*xerr'; where xerr is as per gmm_to_gaussian() for the two merged points

Questions
---------

- Can we do non-linear transform of PDF if transform is approximated
by, say, a GMM?

Demos
-----

- Approximate Bracewell's functions with gmms and test the convolution routines give the anticipated shapes.