Changeset 9856
- Timestamp:
- Nov 3, 2006, 4:36:25 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/detrend/pmFringeStats.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/detrend/pmFringeStats.c
r9822 r9856 250 250 (void)psMemSetDeallocator(stats, (psFreeFunc)fringeStatsFree); 251 251 252 int numRegions = regions-> x->n;// Number of regions252 int numRegions = regions->nRequested; // Number of regions 253 253 stats->regions = psMemIncrRefCounter(regions); 254 254 stats->f = psVectorAlloc(numRegions, PS_TYPE_F32); … … 475 475 return NULL; 476 476 } 477 unsignedint num = regions->nRequested; // Number of fringe points477 int num = regions->nRequested; // Number of fringe points 478 478 if (regions->x->n != num || regions->y->n != num || regions->mask->n != num || 479 479 fringe->f->n != num || fringe->df->n != num) { … … 487 487 488 488 pmFringeRegions *newRegions = pmFringeRegionsAlloc(numPoints, dX, dY, nX, nY); // The new list of regions 489 newRegions->x = psVectorAlloc(numPoints, PS_TYPE_F32); 490 newRegions->y = psVectorAlloc(numPoints, PS_TYPE_F32); 491 newRegions->mask = psVectorAlloc(numPoints, PS_TYPE_U8); 489 492 pmFringeStats *newStats = pmFringeStatsAlloc(newRegions); // The new list of statistics 490 493 … … 499 502 memcpy(&newStats->f->data.F32[offset], fringe->f->data.F32, fringe->f->n * sizeof(psF32)); 500 503 memcpy(&newStats->df->data.F32[offset], fringe->f->data.F32, fringe->df->n * sizeof(psF32)); 504 if (x0 && y0) { 505 for (long j = offset; j < offset + regions->x->n; j++) { 506 newRegions->x->data.F32[j] += x0->data.S32[i]; 507 newRegions->y->data.F32[j] += y0->data.S32[i]; 508 } 509 } 501 510 offset += regions->nRequested; 502 511 } … … 652 661 653 662 #define READ_FRINGES_VECTOR_ROW(VECTOR, TYPE, NAME, DESCRIPTION) \ 654 VECTOR->data.TYPE[i] = psMetadataLookup##TYPE(&mdok, row, NAME); \ 655 if (!mdok) { \ 656 psError(PS_ERR_IO, true, "Unable to find " #DESCRIPTION " .\n"); \ 657 goto READ_FRINGES_DONE; \ 658 } 659 660 #define READ_FRINGES_ARRAY_ROW(ARRAY, NAME, DESCRIPTION) \ 661 ARRAY->data[i] = psMetadataLookupPtr(&mdok, row, NAME); \ 662 if (!ARRAY->data[i] || !mdok) { \ 663 psError(PS_ERR_IO, true, "Unable to find " #DESCRIPTION " .\n"); \ 664 goto READ_FRINGES_DONE; \ 665 } 663 { \ 664 VECTOR->data.TYPE[i] = psMetadataLookup##TYPE(&mdok, row, NAME); \ 665 if (!mdok) { \ 666 psError(PS_ERR_IO, true, "Unable to find " #DESCRIPTION " .\n"); \ 667 goto READ_FRINGES_DONE; \ 668 } \ 669 } 670 671 // Some values may be either a vector or a value --- need to check 672 #define READ_FRINGES_ARRAY_ROW(ARRAY, TYPE, NAME, DESCRIPTION) \ 673 { \ 674 psMetadataItem *item = psMetadataLookup(row, NAME); \ 675 if (!item) { \ 676 psError(PS_ERR_IO, true, "Unable to find " #DESCRIPTION " .\n"); \ 677 goto READ_FRINGES_DONE; \ 678 } \ 679 if (item->type == PS_DATA_VECTOR) { \ 680 ARRAY->data[i] = psMemIncrRefCounter(item->data.V); \ 681 } else if (item->type == PS_TYPE_##TYPE) { \ 682 psVector *vector = psVectorAlloc(1, PS_TYPE_##TYPE); \ 683 vector->data.TYPE[0] = item->data.TYPE; \ 684 ARRAY->data[i] = vector; \ 685 } else { \ 686 psError(PS_ERR_IO, true, "Found " #DESCRIPTION ", but it's of an unsupported type (%x).\n", \ 687 item->type); \ 688 goto READ_FRINGES_DONE; \ 689 } \ 690 } 691 666 692 667 693 // Translate the table into vectors … … 671 697 READ_FRINGES_VECTOR_ROW(y, F32, "y", "y position"); 672 698 READ_FRINGES_VECTOR_ROW(mask, U8, "mask", "mask"); 673 READ_FRINGES_ARRAY_ROW(f, "f", "fringe measurement");674 READ_FRINGES_ARRAY_ROW(df, "df", "fringe error");699 READ_FRINGES_ARRAY_ROW(f, F32, "f", "fringe measurement"); 700 READ_FRINGES_ARRAY_ROW(df, F32, "df", "fringe error"); 675 701 } 676 702 … … 695 721 psFree(table); 696 722 psFree(regions); 697 psFree(x);698 psFree(y);699 psFree(mask);700 723 psFree(f); 701 724 psFree(df); … … 813 836 scale->coeffErr->data.F32[i] = sqrt(A->data.F64[i][i]); 814 837 } 838 839 psFree(A); 840 psFree(B); 815 841 816 842 return true;
Note:
See TracChangeset
for help on using the changeset viewer.
