- Timestamp:
- Apr 21, 2014, 5:42:34 AM (12 years ago)
- Location:
- branches/eam_branches/ps2-tc3-20130727
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
psLib/src/math/psMixtureModels.c (modified) (12 diffs, 1 prop)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ps2-tc3-20130727
- Property svn:mergeinfo changed
-
branches/eam_branches/ps2-tc3-20130727/psLib/src/math/psMixtureModels.c
- Property svn:mergeinfo deleted
r35798 r36680 120 120 *Ncensored = 0; 121 121 122 int k = 0; 122 123 for (int i = 0; i < in->numRows; i++) { 123 124 int isCensored = 0; … … 130 131 *Ncensored = *Ncensored + 1; 131 132 } 132 offsets->data.S32[i] = *Ncensored; 133 } 133 else { 134 offsets->data.S32[k] = i - k; 135 k++; 136 } 137 // offsets->data.S32[i] = isCensored; 138 } 139 134 140 psImage *out; 135 141 if (*Ncensored == 0) { … … 198 204 psVectorInit(modes,NAN); 199 205 for (int i = 0; i < N - Ncensored; i++) { 200 modes->data.F32[i -offsets->data.S32[i]] = tempModes->data.F32[i];206 modes->data.F32[i + offsets->data.S32[i]] = tempModes->data.F32[i]; 201 207 } 202 208 psFree(tempModes); … … 320 326 } 321 327 } 322 i = modes->data.F32[k]; 323 counts->data.F32[i] += 1.0; 328 if (modes->data.F32[k] != -1) { 329 i = modes->data.F32[k]; 330 counts->data.F32[i] += 1.0; 331 } 324 332 } 325 333 … … 335 343 for (k = 0; k < N; k++) { 336 344 i = modes->data.F32[k]; 337 for (j = 0; j < dim; j++) { 338 means->data.F32[i][j] += D->data.F32[k][j]; 345 if (i != -1) { 346 for (j = 0; j < dim; j++) { 347 means->data.F32[i][j] += D->data.F32[k][j]; 348 } 339 349 } 340 350 } … … 403 413 success = psMMGMMUncensored(Dcensored, 404 414 dim, 405 N ,415 N - Ncensored, 406 416 tempModes, 407 417 means, … … 418 428 } 419 429 if (!P) { 420 P = psImageAlloc( N,m,PS_TYPE_F32);430 P = psImageAlloc(m,N,PS_TYPE_F32); 421 431 } 422 432 psVectorInit(modes,NAN); … … 424 434 425 435 for (int i = 0; i < N - Ncensored; i++) { 426 modes->data.F32[i -offsets->data.S32[i]] = tempModes->data.F32[i];436 modes->data.F32[i + offsets->data.S32[i]] = tempModes->data.F32[i]; 427 437 for (int j = 0; j < dim; j++) { 428 P->data.F32[i -offsets->data.S32[i]][j] = tempP->data.F32[i][j];438 P->data.F32[i + offsets->data.S32[i]][j] = tempP->data.F32[i][j]; 429 439 } 430 440 } … … 511 521 } 512 522 for (i = 0; i < m; i++) { 513 pi->data.F32[i] = counts->data.F32[i] / N; 523 //pi->data.F32[i] = counts->data.F32[i] / (1.0 * N); 524 pi->data.F32[i] = 0.5; 514 525 } 515 526 … … 539 550 for (j = 0; j < dim; j++) { // VV 540 551 M->data.F32[j] = means->data.F32[i][j]; 541 } 552 // printf("%f %f %f\n", 553 // X->data.F32[j],M->data.F32[j], 554 // S->data.F32[j][j]); 555 } 556 542 557 543 558 P->data.F32[k][i] = … … 545 560 546 561 logL += log(P->data.F32[k][i]); 562 // printf("%d %d %f %f %f %f\n", 563 // k,i, 564 // pi->data.F32[i], 565 // psMMNDGaussian(X,M,S), 566 // P->data.F32[k][i],logL); 547 567 norm_K += P->data.F32[k][i]; 548 568 } … … 612 632 } 613 633 } 614 } 634 } 635 // printf("%d %f %f %f %f\n",*iterations,logL,oldlogL,means->data.F32[0][0],means->data.F32[1][0]); 636 *iterations = *iterations + 1; 615 637 } while ((logL - oldlogL > 0)&& 616 638 (*iterations < MAX_ITERATIONS));
Note:
See TracChangeset
for help on using the changeset viewer.
