Mercurial > hg > silvet
comparison src/EM.cpp @ 54:a54df67e607e preshift
Merge from default branch
author | Chris Cannam |
---|---|
date | Mon, 07 Apr 2014 17:36:40 +0100 |
parents | ce1d88759557 9e2d1f6cd43a |
children | 384338fa460d |
comparison
equal
deleted
inserted
replaced
52:22553e7b2a63 | 54:a54df67e607e |
---|---|
90 for (int i = 0; i < (int)column.size(); ++i) { | 90 for (int i = 0; i < (int)column.size(); ++i) { |
91 sum += column[i]; | 91 sum += column[i]; |
92 } | 92 } |
93 for (int i = 0; i < (int)column.size(); ++i) { | 93 for (int i = 0; i < (int)column.size(); ++i) { |
94 column[i] /= sum; | 94 column[i] /= sum; |
95 } | |
96 } | |
97 | |
98 void | |
99 EM::normaliseSources(Grid &sources) | |
100 { | |
101 V denominators(sources[0].size()); | |
102 | |
103 for (int i = 0; i < (int)sources.size(); ++i) { | |
104 for (int j = 0; j < (int)sources[i].size(); ++j) { | |
105 denominators[j] += sources[i][j]; | |
106 } | |
107 } | |
108 | |
109 for (int i = 0; i < (int)sources.size(); ++i) { | |
110 for (int j = 0; j < (int)sources[i].size(); ++j) { | |
111 sources[i][j] /= denominators[j]; | |
112 } | |
95 } | 113 } |
96 } | 114 } |
97 | 115 |
98 void | 116 void |
99 EM::iterate(V column) | 117 EM::iterate(V column) |
174 } | 192 } |
175 if (m_sourceSparsity != 1.0) { | 193 if (m_sourceSparsity != 1.0) { |
176 newSources[i][n] = pow(newSources[i][n], m_sourceSparsity); | 194 newSources[i][n] = pow(newSources[i][n], m_sourceSparsity); |
177 } | 195 } |
178 } | 196 } |
179 normalise(newSources[i]); | 197 } |
180 } | 198 normaliseSources(newSources); |
181 | 199 |
182 m_pitches = newPitches; | 200 m_pitches = newPitches; |
183 m_sources = newSources; | 201 m_sources = newSources; |
184 } | 202 } |
185 | 203 |