Mercurial > hg > qm-dsp
comparison hmm/hmm.c @ 58:d72fcd34d9a7
* Fixes to problems shown up by vamp-plugin-tester.
Still not all plugins pass all tests, though
author | cannam |
---|---|
date | Mon, 23 Mar 2009 16:28:53 +0000 |
parents | 03abd5957853 |
children | 054c384d860d |
comparison
equal
deleted
inserted
replaced
57:d241e7701c0c | 58:d72fcd34d9a7 |
---|---|
176 int foundnan = 0; | 176 int foundnan = 0; |
177 | 177 |
178 while (iter < niter && !foundnan && !(iter > 1 && (loglik - loglik1) < thresh * (loglik1 - loglik2))) | 178 while (iter < niter && !foundnan && !(iter > 1 && (loglik - loglik1) < thresh * (loglik1 - loglik2))) |
179 { | 179 { |
180 ++iter; | 180 ++iter; |
181 | 181 /* |
182 fprintf(stderr, "calculating obsprobs...\n"); | 182 fprintf(stderr, "calculating obsprobs...\n"); |
183 fflush(stderr); | 183 fflush(stderr); |
184 | 184 */ |
185 /* precalculate obs probs */ | 185 /* precalculate obs probs */ |
186 invert(cov, L, icov, &detcov); | 186 invert(cov, L, icov, &detcov); |
187 | 187 |
188 for (t = 0; t < T; t++) | 188 for (t = 0; t < T; t++) |
189 { | 189 { |
204 b[t][i] = 0.00001; | 204 b[t][i] = 0.00001; |
205 } | 205 } |
206 } | 206 } |
207 */ | 207 */ |
208 } | 208 } |
209 | 209 /* |
210 fprintf(stderr, "forwards-backwards...\n"); | 210 fprintf(stderr, "forwards-backwards...\n"); |
211 fflush(stderr); | 211 fflush(stderr); |
212 | 212 */ |
213 forward_backwards(xi, gamma, &loglik, &loglik1, &loglik2, iter, N, T, p0, a, b); | 213 forward_backwards(xi, gamma, &loglik, &loglik1, &loglik2, iter, N, T, p0, a, b); |
214 | 214 /* |
215 fprintf(stderr, "iteration %d: loglik = %f\n", iter, loglik); | 215 fprintf(stderr, "iteration %d: loglik = %f\n", iter, loglik); |
216 fprintf(stderr, "re-estimation...\n"); | 216 fprintf(stderr, "re-estimation...\n"); |
217 fflush(stderr); | 217 fflush(stderr); |
218 | 218 */ |
219 if (isnan(loglik)) { | 219 if (isnan(loglik)) { |
220 foundnan = 1; | 220 foundnan = 1; |
221 continue; | 221 continue; |
222 } | 222 } |
223 | 223 |
291 | 291 |
292 for (i = 0; i < N; i++) | 292 for (i = 0; i < N; i++) |
293 { | 293 { |
294 if (sum_gamma[i] == 0) | 294 if (sum_gamma[i] == 0) |
295 { | 295 { |
296 fprintf(stderr, "sum_gamma[%d] was zero...\n", i); | 296 /* fprintf(stderr, "sum_gamma[%d] was zero...\n", i); */ |
297 } | 297 } |
298 //double s = 0; | 298 //double s = 0; |
299 for (j = 0; j < N; j++) | 299 for (j = 0; j < N; j++) |
300 { | 300 { |
301 a[i][j] = 0; | 301 a[i][j] = 0; |