changeset 54:a54df67e607e preshift

Merge from default branch
author Chris Cannam
date Mon, 07 Apr 2014 17:36:40 +0100
parents 22553e7b2a63 (current diff) 9e2d1f6cd43a (diff)
children 384338fa460d
files src/EM.cpp src/EM.h
diffstat 2 files changed, 20 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/EM.cpp	Mon Apr 07 17:07:51 2014 +0100
+++ b/src/EM.cpp	Mon Apr 07 17:36:40 2014 +0100
@@ -96,6 +96,24 @@
 }
 
 void
+EM::normaliseSources(Grid &sources)
+{
+    V denominators(sources[0].size());
+
+    for (int i = 0; i < (int)sources.size(); ++i) {
+        for (int j = 0; j < (int)sources[i].size(); ++j) {
+            denominators[j] += sources[i][j];
+        }
+    }
+
+    for (int i = 0; i < (int)sources.size(); ++i) {
+        for (int j = 0; j < (int)sources[i].size(); ++j) {
+            sources[i][j] /= denominators[j];
+        }
+    }
+}
+
+void
 EM::iterate(V column)
 {
     normalise(column);
@@ -176,8 +194,8 @@
                 newSources[i][n] = pow(newSources[i][n], m_sourceSparsity);
             }
         }
-        normalise(newSources[i]);
     }
+    normaliseSources(newSources);
 
     m_pitches = newPitches;
     m_sources = newSources;
--- a/src/EM.h	Mon Apr 07 17:07:51 2014 +0100
+++ b/src/EM.h	Mon Apr 07 17:36:40 2014 +0100
@@ -60,6 +60,7 @@
     int m_highestPitch;
 
     void normalise(V &column);
+    void normaliseSources(Grid &grid);
     void expectation(const V &column);
     void maximisation(const V &column);