|
Revision 1096, 1.2 kB
(checked in by smidl, 15 years ago)
|
|
doc
|
| Line | |
|---|
| 1 | %> @brief Merger projecting sources to a Guassian using Arithmetic combination |
|---|
| 2 | % ====================================================================== |
|---|
| 3 | classdef mexGaussMergerArit < mexMerger |
|---|
| 4 | methods |
|---|
| 5 | %> check consistency of the object and fill defaults |
|---|
| 6 | function obj=validate(obj) |
|---|
| 7 | if length(obj.sources)<1 |
|---|
| 8 | error('No sources to merge'); |
|---|
| 9 | end |
|---|
| 10 | |
|---|
| 11 | obj.merger= struct('class','egauss'); |
|---|
| 12 | end |
|---|
| 13 | |
|---|
| 14 | %> Merge sources into the merger |
|---|
| 15 | function obj=merge(obj) |
|---|
| 16 | Cov = epdf_covariance(obj.sources{1}); |
|---|
| 17 | mea = epdf_mean(obj.sources{1}); |
|---|
| 18 | |
|---|
| 19 | Mom1 = obj.weights(1)*mea; |
|---|
| 20 | Mom2 = obj.weights(1)*(Cov+mea*mea'); |
|---|
| 21 | for i=2:length(obj.sources) |
|---|
| 22 | Cov = epdf_covariance(obj.sources{i}); |
|---|
| 23 | mea = epdf_mean(obj.sources{i}); |
|---|
| 24 | |
|---|
| 25 | Mom1 = Mom1+ obj.weights(i)*mea; |
|---|
| 26 | Mom2 = Mom2 + obj.weights(i)*(Cov+mea*mea'); |
|---|
| 27 | end |
|---|
| 28 | obj.merger.mu = Mom1; |
|---|
| 29 | obj.merger.R = Mom2 - Mom1*Mom1'; |
|---|
| 30 | % transform old estimate into new estimate |
|---|
| 31 | end |
|---|
| 32 | end |
|---|
| 33 | end |
|---|