Revision 1096, 1.2 kB
(checked in by smidl, 14 years ago)
|
doc
|
Rev | Line | |
---|
[1096] | 1 | %> @brief Merger projecting sources to a Guassian using Arithmetic combination |
---|
[1087] | 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 |
---|
[1096] | 13 | |
---|
[1087] | 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 |
---|