Changeset 831 for trunk/psLib/src/dataManip
- Timestamp:
- Jun 2, 2004, 1:29:39 PM (22 years ago)
- Location:
- trunk/psLib/src/dataManip
- Files:
-
- 5 edited
-
psFFT.c (modified) (11 diffs)
-
psFunctions.c (modified) (3 diffs)
-
psMatrix.c (modified) (7 diffs)
-
psStats.c (modified) (41 diffs)
-
psVectorFFT.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/dataManip/psFFT.c
r827 r831 5 5 * @author Robert DeSonia, MHPCC 6 6 * 7 * @version $Revision: 1. 7$ $Name: not supported by cvs2svn $8 * @date $Date: 2004-06-02 03:02:48$7 * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2004-06-02 23:29:21 $ 9 9 * 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 448 448 numElements = in->n; 449 449 450 out = psVectorRecycle(out, PS_TYPE_C32,numElements);450 out = psVectorRecycle(out, numElements, PS_TYPE_C32); 451 451 452 452 if (type == PS_TYPE_F32) { 453 453 // need to convert to complex 454 psC32* outVec = out-> vec.cf;455 psF32* inVec = in-> vec.f;454 psC32* outVec = out->data.C32; 455 psF32* inVec = in->data.F32; 456 456 for (unsigned int i=0;i<numElements;i++) { 457 457 outVec[i] = inVec[i]; 458 458 } 459 459 } else { 460 psC32* outVec = out-> vec.cf;461 psC32* inVec = in-> vec.cf;460 psC32* outVec = out->data.C32; 461 psC32* inVec = in->data.C32; 462 462 for (unsigned int i=0;i<numElements;i++) { 463 463 outVec[i] = inVec[i]; … … 466 466 467 467 plan = fftwf_plan_dft_1d(numElements, 468 (fftwf_complex*)out-> vec.cf,469 (fftwf_complex*)out-> vec.cf,468 (fftwf_complex*)out->data.C32, 469 (fftwf_complex*)out->data.C32, 470 470 direction, 471 471 P_FFTW_PLAN_RIGOR); … … 504 504 psLogMsg(__func__,PS_LOG_WARN,"Real portion of a non-Complex type called called for. " 505 505 "Just a vector copy was performed."); 506 out = psVectorRecycle(out, type,numElements);507 memcpy(out-> vec.v,in->vec.v,numElements*PSELEMTYPE_SIZEOF(type));506 out = psVectorRecycle(out,numElements,type); 507 memcpy(out->data.V,in->data.V,numElements*PSELEMTYPE_SIZEOF(type)); 508 508 return out; 509 509 } … … 511 511 if (type == PS_TYPE_C32) { 512 512 psF32* outVec; 513 psC32* inVec = in-> vec.cf;514 515 out = psVectorRecycle(out, PS_TYPE_F32,numElements);516 outVec = out-> vec.f;513 psC32* inVec = in->data.C32; 514 515 out = psVectorRecycle(out,numElements,PS_TYPE_F32); 516 outVec = out->data.F32; 517 517 518 518 for (unsigned int i=0;i<numElements;i++) { … … 548 548 "A zeroed vector was returned."); 549 549 out = psVectorRecycle(out,numElements,type); 550 memset(out-> vec.v,0,PSELEMTYPE_SIZEOF(type)*numElements);550 memset(out->data.V,0,PSELEMTYPE_SIZEOF(type)*numElements); 551 551 return out; 552 552 } … … 554 554 if (type == PS_TYPE_C32) { 555 555 psF32* outVec; 556 psC32* inVec = in-> vec.cf;557 558 out = psVectorRecycle(out, PS_TYPE_F32,numElements);559 outVec = out-> vec.f;556 psC32* inVec = in->data.C32; 557 558 out = psVectorRecycle(out,numElements, PS_TYPE_F32); 559 outVec = out->data.F32; 560 560 561 561 for (unsigned int i=0;i<numElements;i++) { … … 601 601 if (type == PS_TYPE_F32) { 602 602 psC32* outVec; 603 psF32* realVec = real-> vec.f;604 psF32* imagVec = imag-> vec.f;605 606 out = psVectorRecycle(out, PS_TYPE_C32,numElements);607 outVec = out-> vec.cf;603 psF32* realVec = real->data.F32; 604 psF32* imagVec = imag->data.F32; 605 606 out = psVectorRecycle(out,numElements, PS_TYPE_C32); 607 outVec = out->data.C32; 608 608 609 609 for (unsigned int i=0;i<numElements;i++) { … … 639 639 "Vector copy was performed instead."); 640 640 641 out = psVectorRecycle(out, type,numElements);642 memcpy(out-> vec.v,in->vec.v,PSELEMTYPE_SIZEOF(type)*numElements);641 out = psVectorRecycle(out,numElements,type); 642 memcpy(out->data.V,in->data.V,PSELEMTYPE_SIZEOF(type)*numElements); 643 643 return out; 644 644 } … … 646 646 if (type == PS_TYPE_C32) { 647 647 psC32* outVec; 648 psC32* inVec = in-> vec.cf;649 650 out = psVectorRecycle(out, PS_TYPE_C32,numElements);651 outVec = out-> vec.cf;648 psC32* inVec = in->data.C32; 649 650 out = psVectorRecycle(out,numElements,PS_TYPE_C32); 651 outVec = out->data.C32; 652 652 653 653 for (unsigned int i=0;i<numElements;i++) { … … 686 686 if (type == PS_TYPE_C32) { 687 687 psF32* outVec; 688 psC32* inVec = in-> vec.cf;688 psC32* inVec = in->data.C32; 689 689 psF32 real; 690 690 psF32 imag; 691 691 692 692 693 out = psVectorRecycle(out, PS_TYPE_F32,numElements);694 outVec = out-> vec.f;693 out = psVectorRecycle(out,numElements,PS_TYPE_F32); 694 outVec = out->data.F32; 695 695 696 696 for (unsigned int i=0;i<numElements;i++) { -
trunk/psLib/src/dataManip/psFunctions.c
r822 r831 6 6 * @author George Gusciora, MHPCC 7 7 * 8 * @version $Revision: 1. 8$ $Name: not supported by cvs2svn $9 * @date $Date: 2004-06-0 1 22:24:55$8 * @version $Revision: 1.9 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2004-06-02 23:29:21 $ 10 10 * 11 11 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 75 75 int i = 0; 76 76 77 gauss = psVectorAlloc(Npts, PS_TYPE_F LOAT);77 gauss = psVectorAlloc(Npts, PS_TYPE_F32); 78 78 gsl_rng_env_setup(); 79 79 T = gsl_rng_default; … … 81 81 82 82 for (i = 0; i < Npts; i++) { 83 gauss-> vec.f[i] = mean + gsl_ran_gaussian(r, sigma);83 gauss->data.F32[i] = mean + gsl_ran_gaussian(r, sigma); 84 84 } 85 85 -
trunk/psLib/src/dataManip/psMatrix.c
r824 r831 20 20 * @author Ross Harman, MHPCC 21 21 * 22 * @version $Revision: 1. 5$ $Name: not supported by cvs2svn $23 * @date $Date: 2004-06-0 1 22:42:57$22 * @version $Revision: 1.6 $ $Name: not supported by cvs2svn $ 23 * @date $Date: 2004-06-02 23:29:21 $ 24 24 * 25 25 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 70 70 /** Preprocessor macro to generate error a NULL image */ 71 71 #define PS_CHECK_NULL_VECTOR(NAME, RETURN) \ 72 if (NAME == NULL || NAME-> vec.v== NULL) { \72 if (NAME == NULL || NAME->data.V == NULL) { \ 73 73 psError(__func__,"Invalid operation: %s or its data is NULL.", #NAME); \ 74 74 return RETURN; \ … … 78 78 #define PS_CHECK_ALLOC_VECTOR(NAME, SIZE, PS_TYPE) \ 79 79 if(NAME == NULL) { \ 80 NAME = psVectorAlloc( PS_TYPE, SIZE); \80 NAME = psVectorAlloc(SIZE, PS_TYPE); \ 81 81 } 82 82 … … 173 173 perm.size = numCols; 174 174 outPerm->n = numCols; 175 perm.data = outPerm-> vec.v;175 perm.data = outPerm->data.V; 176 176 PS_GSL_MATRIX_INITIALIZE(lu, outImage->data.V[0]); 177 177 … … 226 226 227 227 perm.size = inPerm->n; 228 perm.data = inPerm-> vec.v;228 perm.data = inPerm->data.V; 229 229 230 230 b.size = inVector->n; 231 231 b.stride = 1; 232 b.data = inVector-> vec.v;232 b.data = inVector->data.V; 233 233 234 234 x.size = numCols; 235 235 x.stride = 1; 236 x.data = outVector-> vec.v;236 x.data = outVector->data.V; 237 237 238 238 // Solve for {x} in equation: {b} = [A]{x} … … 483 483 484 484 colSize = PSELEMTYPE_SIZEOF(inImage->type.type)*inImage->numRows; 485 memcpy(outVector-> vec.v, inImage->data.V[0], colSize);485 memcpy(outVector->data.V, inImage->data.V[0], colSize); 486 486 487 487 return outVector; … … 510 510 511 511 colSize = PSELEMTYPE_SIZEOF(outImage->type.type)*outImage->numRows; 512 memcpy(outImage->data.V[0], inVector-> vec.v, colSize);512 memcpy(outImage->data.V[0], inVector->data.V, colSize); 513 513 514 514 return outImage; -
trunk/psLib/src/dataManip/psStats.c
r797 r831 86 86 87 87 newHist = (psHistogram *) psAlloc(sizeof(psHistogram)); 88 newHist->bounds = psVectorAlloc( PS_TYPE_FLOAT, n+1);88 newHist->bounds = psVectorAlloc(n+1, PS_TYPE_F32); 89 89 binSize = (upper - lower) / (float) n; 90 90 for (i=0;i<n+1;i++) { 91 newHist->bounds-> vec.f[i] = lower + (binSize * (float) i);92 } 93 newHist->nums = psVectorAlloc( PS_TYPE_INT32, n);91 newHist->bounds->data.F32[i] = lower + (binSize * (float) i); 92 } 93 newHist->nums = psVectorAlloc(n, PS_TYPE_S32); 94 94 newHist->minNum = 0; 95 95 newHist->maxNum = 0; … … 106 106 107 107 newHist = (psHistogram *) psAlloc(sizeof(psHistogram)); 108 newHist->bounds = psVectorAlloc( PS_TYPE_FLOAT, bounds->n);108 newHist->bounds = psVectorAlloc(bounds->n, PS_TYPE_F32); 109 109 for (i=0;i<bounds->n;i++) { 110 newHist->bounds-> vec.f[i] = bounds->vec.f[i];111 } 112 newHist->nums = psVectorAlloc( PS_TYPE_INT32, (bounds->n)-1);110 newHist->bounds->data.F32[i] = bounds->data.F32[i]; 111 } 112 newHist->nums = psVectorAlloc((bounds->n)-1, PS_TYPE_S32); 113 113 114 114 newHist->minNum = 0; … … 152 152 for (i=0;i<in->n;i++) { 153 153 // Check if this pixel is masked, and if so, skip it. 154 if (!(mask-> vec.i32[i] & maskVal)) {154 if (!(mask->data.S32[i] & maskVal)) { 155 155 // Check if this pixel is below the minimum value, and if so 156 156 // count it, then skip it. 157 if (in-> vec.f[i] < out->bounds->vec.f[0]) {157 if (in->data.F32[i] < out->bounds->data.F32[0]) { 158 158 out->minNum++; 159 159 160 160 // Check if this pixel is above the maximum value, and if so 161 161 // count it, then skip it. 162 } else if (in-> vec.f[i] > out->bounds->vec.f[numBins]) {162 } else if (in->data.F32[i] > out->bounds->data.F32[numBins]) { 163 163 out->maxNum++; 164 164 } else { … … 166 166 // number is trivial. 167 167 if (out->uniform == true) { 168 binSize = out->bounds-> vec.f[1] - out->bounds->vec.f[0];169 170 binNum = (int) ((in-> vec.f[i] - out->bounds->vec.f[0]) /168 binSize = out->bounds->data.F32[1] - out->bounds->data.F32[0]; 169 170 binNum = (int) ((in->data.F32[i] - out->bounds->data.F32[0]) / 171 171 binSize); 172 (out->nums-> vec.i32[binNum])++;172 (out->nums->data.S32[binNum])++; 173 173 // If this is a non-uniform histogram, determining the correct 174 174 // bin number requires a bit more work. … … 177 177 // find the correct bin number (bin search, probably) 178 178 for (j=0;j<(out->bounds->n)-1;j++) { 179 if ((out->bounds-> vec.i32[j] <= in->vec.f[i]) &&180 (in-> vec.f[i] <= out->bounds->vec.i32[j+1])) {181 (out->nums-> vec.i32[j])++;179 if ((out->bounds->data.S32[j] <= in->data.F32[i]) && 180 (in->data.F32[i] <= out->bounds->data.S32[j+1])) { 181 (out->nums->data.S32[j])++; 182 182 } 183 183 } … … 198 198 for (i=0;i<myVector->n;i++) { 199 199 if (maskVector != NULL) 200 printf("Element %d is %f (mask is %d)\n", i, myVector-> vec.f[i], maskVector->vec.ui8[i]);200 printf("Element %d is %f (mask is %d)\n", i, myVector->data.F32[i], maskVector->data.U8[i]); 201 201 else 202 printf("Element %d is %f\n", i, myVector-> vec.f[i]);202 printf("Element %d is %f\n", i, myVector->data.F32[i]); 203 203 } 204 204 } … … 234 234 if (maskVector != NULL) { 235 235 for (i=0;i<myVector->n;i++) { 236 if (!(maskVal & maskVector-> vec.ui8[i]) &&237 (rangeMin <= myVector-> vec.f[i]) &&238 (myVector-> vec.f[i] <= rangeMax)) {239 mean+= myVector-> vec.f[i];236 if (!(maskVal & maskVector->data.U8[i]) && 237 (rangeMin <= myVector->data.F32[i]) && 238 (myVector->data.F32[i] <= rangeMax)) { 239 mean+= myVector->data.F32[i]; 240 240 count++; 241 241 } … … 244 244 } else { 245 245 for (i=0;i<myVector->n;i++) { 246 if ((rangeMin <= myVector-> vec.f[i]) &&247 (myVector-> vec.f[i] <= rangeMax)) {248 mean+= myVector-> vec.f[i];246 if ((rangeMin <= myVector->data.F32[i]) && 247 (myVector->data.F32[i] <= rangeMax)) { 248 mean+= myVector->data.F32[i]; 249 249 count++; 250 250 } … … 255 255 if (maskVector != NULL) { 256 256 for (i=0;i<myVector->n;i++) { 257 if (!(maskVal & maskVector-> vec.ui8[i])) {258 mean+= myVector-> vec.f[i];257 if (!(maskVal & maskVector->data.U8[i])) { 258 mean+= myVector->data.F32[i]; 259 259 count++; 260 260 } … … 263 263 } else { 264 264 for (i=0;i<myVector->n;i++) { 265 mean+= myVector-> vec.f[i];265 mean+= myVector->data.F32[i]; 266 266 } 267 267 mean/= (float) myVector->n; … … 287 287 if (maskVector != NULL) { 288 288 for (i=0;i<myVector->n;i++) { 289 if (!(maskVal & maskVector-> vec.ui8[i])) {290 if ((myVector-> vec.f[i] > max) &&291 (rangeMin <= myVector-> vec.f[i]) &&292 (myVector-> vec.f[i] <= rangeMax)) {293 max = myVector-> vec.f[i];289 if (!(maskVal & maskVector->data.U8[i])) { 290 if ((myVector->data.F32[i] > max) && 291 (rangeMin <= myVector->data.F32[i]) && 292 (myVector->data.F32[i] <= rangeMax)) { 293 max = myVector->data.F32[i]; 294 294 } 295 295 } … … 297 297 } else { 298 298 for (i=0;i<myVector->n;i++) { 299 if ((myVector-> vec.f[i] > max) &&300 (rangeMin <= myVector-> vec.f[i]) &&301 (myVector-> vec.f[i] <= rangeMax)) {302 max = myVector-> vec.f[i];299 if ((myVector->data.F32[i] > max) && 300 (rangeMin <= myVector->data.F32[i]) && 301 (myVector->data.F32[i] <= rangeMax)) { 302 max = myVector->data.F32[i]; 303 303 } 304 304 } … … 307 307 if (maskVector != NULL) { 308 308 for (i=0;i<myVector->n;i++) { 309 if (!(maskVal & maskVector-> vec.ui8[i])) {310 if (myVector-> vec.f[i] > max) {311 max = myVector-> vec.f[i];309 if (!(maskVal & maskVector->data.U8[i])) { 310 if (myVector->data.F32[i] > max) { 311 max = myVector->data.F32[i]; 312 312 } 313 313 } … … 315 315 } else { 316 316 for (i=0;i<myVector->n;i++) { 317 if (myVector-> vec.f[i] > max) {318 max = myVector-> vec.f[i];317 if (myVector->data.F32[i] > max) { 318 max = myVector->data.F32[i]; 319 319 } 320 320 } … … 340 340 if (maskVector != NULL) { 341 341 for (i=0;i<myVector->n;i++) { 342 if (!(maskVal & maskVector-> vec.ui8[i])) {343 if ((myVector-> vec.f[i] < min) &&344 (rangeMin <= myVector-> vec.f[i]) &&345 (myVector-> vec.f[i] <= rangeMax)) {346 min = myVector-> vec.f[i];342 if (!(maskVal & maskVector->data.U8[i])) { 343 if ((myVector->data.F32[i] < min) && 344 (rangeMin <= myVector->data.F32[i]) && 345 (myVector->data.F32[i] <= rangeMax)) { 346 min = myVector->data.F32[i]; 347 347 } 348 348 } … … 350 350 } else { 351 351 for (i=0;i<myVector->n;i++) { 352 if ((myVector-> vec.f[i] < min) &&353 (rangeMin <= myVector-> vec.f[i]) &&354 (myVector-> vec.f[i] <= rangeMax)) {355 min = myVector-> vec.f[i];352 if ((myVector->data.F32[i] < min) && 353 (rangeMin <= myVector->data.F32[i]) && 354 (myVector->data.F32[i] <= rangeMax)) { 355 min = myVector->data.F32[i]; 356 356 } 357 357 } … … 360 360 if (maskVector != NULL) { 361 361 for (i=0;i<myVector->n;i++) { 362 if (!(maskVal & maskVector-> vec.ui8[i])) {363 if (myVector-> vec.f[i] < min) {364 min = myVector-> vec.f[i];362 if (!(maskVal & maskVector->data.U8[i])) { 363 if (myVector->data.F32[i] < min) { 364 min = myVector->data.F32[i]; 365 365 } 366 366 } … … 368 368 } else { 369 369 for (i=0;i<myVector->n;i++) { 370 if (myVector-> vec.f[i] < min) {371 min = myVector-> vec.f[i];370 if (myVector->data.F32[i] < min) { 371 min = myVector->data.F32[i]; 372 372 } 373 373 } … … 397 397 if (maskVector != NULL) { 398 398 for (i=0;i<myVector->n;i++) { 399 if (!(maskVal & maskVector-> vec.ui8[i]) &&400 (rangeMin <= myVector-> vec.f[i]) &&401 (myVector-> vec.f[i] <= rangeMax)) {399 if (!(maskVal & maskVector->data.U8[i]) && 400 (rangeMin <= myVector->data.F32[i]) && 401 (myVector->data.F32[i] <= rangeMax)) { 402 402 numData++; 403 403 } … … 405 405 } else { 406 406 for (i=0;i<myVector->n;i++) { 407 if ((rangeMin <= myVector-> vec.f[i]) &&408 (myVector-> vec.f[i] <= rangeMax)) {407 if ((rangeMin <= myVector->data.F32[i]) && 408 (myVector->data.F32[i] <= rangeMax)) { 409 409 numData++; 410 410 } … … 416 416 if (maskVector != NULL) { 417 417 for (i=0;i<myVector->n;i++) { 418 if (!(maskVal & maskVector-> vec.ui8[i])) {418 if (!(maskVal & maskVector->data.U8[i])) { 419 419 numData++; 420 420 } … … 469 469 470 470 // Allocate temporary vectors for the data. 471 unsortedVector = psVectorAlloc( PS_TYPE_FLOAT, nValues);471 unsortedVector = psVectorAlloc(nValues, PS_TYPE_F32); 472 472 unsortedVector->n = unsortedVector->nalloc; 473 sortedVector = psVectorAlloc( PS_TYPE_FLOAT, nValues);473 sortedVector = psVectorAlloc(nValues, PS_TYPE_F32); 474 474 sortedVector->n = sortedVector->nalloc; 475 475 … … 484 484 if (maskVector != NULL) { 485 485 for (i=0;i<myVector->n;i++) { 486 if (!(maskVal & maskVector-> vec.ui8[i]) &&487 (rangeMin <= myVector-> vec.f[i]) &&488 (myVector-> vec.f[i] <= rangeMax)) {489 unsortedVector-> vec.f[count++] = maskVector->vec.f[i];490 } 491 } 492 } else { 493 for (i=0;i<myVector->n;i++) { 494 if ((rangeMin <= myVector-> vec.f[i]) &&495 (myVector-> vec.f[i] <= rangeMax)) {496 unsortedVector-> vec.f[count++] = maskVector->vec.f[i];486 if (!(maskVal & maskVector->data.U8[i]) && 487 (rangeMin <= myVector->data.F32[i]) && 488 (myVector->data.F32[i] <= rangeMax)) { 489 unsortedVector->data.F32[count++] = maskVector->data.F32[i]; 490 } 491 } 492 } else { 493 for (i=0;i<myVector->n;i++) { 494 if ((rangeMin <= myVector->data.F32[i]) && 495 (myVector->data.F32[i] <= rangeMax)) { 496 unsortedVector->data.F32[count++] = maskVector->data.F32[i]; 497 497 } 498 498 } … … 503 503 if (maskVector != NULL) { 504 504 for (i=0;i<myVector->n;i++) { 505 if (!(maskVal & maskVector-> vec.ui8[i])) {506 unsortedVector-> vec.f[count++] = maskVector->vec.f[i];507 } 508 } 509 } else { 510 for (i=0;i<myVector->n;i++) { 511 unsortedVector-> vec.f[i] = maskVector->vec.f[i];505 if (!(maskVal & maskVector->data.U8[i])) { 506 unsortedVector->data.F32[count++] = maskVector->data.F32[i]; 507 } 508 } 509 } else { 510 for (i=0;i<myVector->n;i++) { 511 unsortedVector->data.F32[i] = maskVector->data.F32[i]; 512 512 } 513 513 } … … 518 518 // Calculate the median exactly. 519 519 if (0 == (nValues % 2)) { 520 stats->sampleMedian = 0.5 * (sortedVector-> vec.f[(nValues/2)-1] +521 sortedVector-> vec.f[nValues/2]);520 stats->sampleMedian = 0.5 * (sortedVector->data.F32[(nValues/2)-1] + 521 sortedVector->data.F32[nValues/2]); 522 522 } else { 523 stats->sampleMedian = sortedVector-> vec.f[nValues/2];523 stats->sampleMedian = sortedVector->data.F32[nValues/2]; 524 524 } 525 525 … … 569 569 for (j=-GAUSS_WIDTH;j<=+GAUSS_WIDTH;j++) { 570 570 if (((j+i) >= 0) && ((j+i) < robustHistogram->nums->n)) { 571 robustHistogram->nums-> vec.i32[j+i]+=571 robustHistogram->nums->data.S32[j+i]+= 572 572 (gaussianCoefs[j+GAUSS_WIDTH] * 573 (float) robustHistogram->nums-> vec.i32[j+i]);573 (float) robustHistogram->nums->data.S32[j+i]); 574 574 } 575 575 } … … 623 623 624 624 // Allocate temporary vectors for the data. 625 unsortedVector = psVectorAlloc( PS_TYPE_FLOAT, nValues);625 unsortedVector = psVectorAlloc(nValues, PS_TYPE_F32); 626 626 unsortedVector->n = unsortedVector->nalloc; 627 sortedVector = psVectorAlloc( PS_TYPE_FLOAT, nValues);627 sortedVector = psVectorAlloc(nValues, PS_TYPE_F32); 628 628 sortedVector->n = sortedVector->nalloc; 629 629 … … 637 637 if (maskVector != NULL) { 638 638 for (i=0;i<myVector->n;i++) { 639 if (!(maskVal & maskVector-> vec.ui8[i]) &&640 (rangeMin <= myVector-> vec.f[i]) &&641 (myVector-> vec.f[i] <= rangeMax)) {642 unsortedVector-> vec.f[count++] = maskVector->vec.f[i];643 } 644 } 645 } else { 646 for (i=0;i<myVector->n;i++) { 647 if ((rangeMin <= myVector-> vec.f[i]) &&648 (myVector-> vec.f[i] <= rangeMax)) {649 unsortedVector-> vec.f[count++] = maskVector->vec.f[i];639 if (!(maskVal & maskVector->data.U8[i]) && 640 (rangeMin <= myVector->data.F32[i]) && 641 (myVector->data.F32[i] <= rangeMax)) { 642 unsortedVector->data.F32[count++] = maskVector->data.F32[i]; 643 } 644 } 645 } else { 646 for (i=0;i<myVector->n;i++) { 647 if ((rangeMin <= myVector->data.F32[i]) && 648 (myVector->data.F32[i] <= rangeMax)) { 649 unsortedVector->data.F32[count++] = maskVector->data.F32[i]; 650 650 } 651 651 } … … 656 656 if (maskVector != NULL) { 657 657 for (i=0;i<myVector->n;i++) { 658 if (!(maskVal & maskVector-> vec.ui8[i])) {659 unsortedVector-> vec.f[count++] = maskVector->vec.f[i];660 } 661 } 662 } else { 663 for (i=0;i<myVector->n;i++) { 664 unsortedVector-> vec.f[i] = maskVector->vec.f[i];658 if (!(maskVal & maskVector->data.U8[i])) { 659 unsortedVector->data.F32[count++] = maskVector->data.F32[i]; 660 } 661 } 662 } else { 663 for (i=0;i<myVector->n;i++) { 664 unsortedVector->data.F32[i] = maskVector->data.F32[i]; 665 665 } 666 666 } … … 672 672 // Calculate the quartile points exactly. 673 673 ind = 3 * (nValues / 4); 674 stats->sampleUQ = sortedVector-> vec.f[ind];674 stats->sampleUQ = sortedVector->data.F32[ind]; 675 675 ind = (nValues / 4); 676 stats->sampleLQ = sortedVector-> vec.f[ind];676 stats->sampleLQ = sortedVector->data.F32[ind]; 677 677 678 678 // Free the temporary data structures. … … 765 765 UQBinNum = -1; 766 766 for (i=0;i<robustHistogram->nums->n;i++) { 767 if ((robustHistogram->nums-> vec.i32[i] <= stats->sampleLQ) &&768 (stats->sampleLQ <= robustHistogram->nums-> vec.i32[i])) {767 if ((robustHistogram->nums->data.S32[i] <= stats->sampleLQ) && 768 (stats->sampleLQ <= robustHistogram->nums->data.S32[i])) { 769 769 LQBinNum = i; 770 770 } 771 771 772 if ((robustHistogram->nums-> vec.i32[i] <= stats->sampleUQ) &&773 (stats->sampleUQ <= robustHistogram->nums-> vec.i32[i])) {772 if ((robustHistogram->nums->data.S32[i] <= stats->sampleUQ) && 773 (stats->sampleUQ <= robustHistogram->nums->data.S32[i])) { 774 774 UQBinNum = i; 775 775 } … … 778 778 // Determine the bin with the peak value in the range LQ to UQ. 779 779 maxBinNum = LQBinNum; 780 maxBinCount = robustHistogram->nums-> vec.i32[maxBinNum];780 maxBinCount = robustHistogram->nums->data.S32[maxBinNum]; 781 781 for (i=LQBinNum;i<=UQBinNum;i++) { 782 if (robustHistogram->nums-> vec.i32[i] > maxBinCount) {782 if (robustHistogram->nums->data.S32[i] > maxBinCount) { 783 783 maxBinNum = i; 784 maxBinCount = robustHistogram->nums-> vec.i32[i];784 maxBinCount = robustHistogram->nums->data.S32[i]; 785 785 } 786 786 } … … 843 843 if (maskVector != NULL) { 844 844 for (i=0;i<myVector->n;i++) { 845 if (!(maskVal & maskVector-> vec.ui8[i]) &&846 (rangeMin <= myVector-> vec.f[i]) &&847 (myVector-> vec.f[i] <= rangeMax)) {848 diff = myVector-> vec.f[i] - mean;845 if (!(maskVal & maskVector->data.U8[i]) && 846 (rangeMin <= myVector->data.F32[i]) && 847 (myVector->data.F32[i] <= rangeMax)) { 848 diff = myVector->data.F32[i] - mean; 849 849 sumSquares+= (diff * diff); 850 850 sumDiffs+= diff; … … 854 854 } else { 855 855 for (i=0;i<myVector->n;i++) { 856 if ((rangeMin <= myVector-> vec.f[i]) &&857 (myVector-> vec.f[i] <= rangeMax)) {858 diff = myVector-> vec.f[i] - mean;856 if ((rangeMin <= myVector->data.F32[i]) && 857 (myVector->data.F32[i] <= rangeMax)) { 858 diff = myVector->data.F32[i] - mean; 859 859 sumSquares+= (diff * diff); 860 860 sumDiffs+= diff; … … 867 867 if (maskVector != NULL) { 868 868 for (i=0;i<myVector->n;i++) { 869 if (!(maskVal & maskVector-> vec.ui8[i])) {870 diff = myVector-> vec.f[i] - mean;869 if (!(maskVal & maskVector->data.U8[i])) { 870 diff = myVector->data.F32[i] - mean; 871 871 sumSquares+= (diff * diff); 872 872 sumDiffs+= diff; … … 876 876 } else { 877 877 for (i=0;i<myVector->n;i++) { 878 diff = myVector-> vec.f[i] - mean;878 diff = myVector->data.F32[i] - mean; 879 879 sumSquares+= (diff * diff); 880 880 sumDiffs+= diff; … … 920 920 } 921 921 922 tmpMask = psVectorAlloc(m askVector->type.type, myVector->nalloc);922 tmpMask = psVectorAlloc(myVector->nalloc, maskVector->type.type); 923 923 924 924 tmpMask->n = maskVector->n; 925 925 for (i=0;i<tmpMask->n;i++) { 926 tmpMask-> vec.ui8[i] = maskVector->vec.ui8[i];926 tmpMask->data.U8[i] = maskVector->data.U8[i]; 927 927 } 928 928 … … 944 944 for (j=0;j<myVector->n;j++) { 945 945 // a) Exclude all values x_i for which |x_i - x| > K * stdev 946 if ( fabs(myVector-> vec.f[j] - clippedMean) >946 if ( fabs(myVector->data.F32[j] - clippedMean) > 947 947 (stats->clipSigma * clippedStdev)) { 948 tmpMask-> vec.ui8[i] = 0xff;948 tmpMask->data.U8[i] = 0xff; 949 949 } 950 950 // b) compute new mean and stdev … … 979 979 980 980 NOTE: The current strategy is to implement everything assuming that all 981 input data is of type PS_TYPE_F LOAT. Once the basic code is in place,982 we will macro-ize everything and add PS_TYPE_U INT16 and PS_TYPE_DOUBLE.981 input data is of type PS_TYPE_F32. Once the basic code is in place, 982 we will macro-ize everything and add PS_TYPE_U16 and PS_TYPE_F64. 983 983 984 984 *****************************************************************************/ … … 992 992 } 993 993 994 if (in->type.type != PS_TYPE_F LOAT) {994 if (in->type.type != PS_TYPE_F32) { 995 995 psAbort(__func__, 996 "Only data type PS_TYPE_F LOATis currently supported.");996 "Only data type PS_TYPE_F32 is currently supported."); 997 997 } 998 998 if (mask != NULL) { … … 1001 1001 "Vector data and vector mask are of different sizes."); 1002 1002 } 1003 if (mask->type.type != PS_TYPE_U INT8) {1003 if (mask->type.type != PS_TYPE_U8) { 1004 1004 psAbort(__func__, 1005 "Vector mask must be type PS_TYPE_U INT8");1005 "Vector mask must be type PS_TYPE_U8"); 1006 1006 } 1007 1007 } -
trunk/psLib/src/dataManip/psVectorFFT.c
r827 r831 5 5 * @author Robert DeSonia, MHPCC 6 6 * 7 * @version $Revision: 1. 7$ $Name: not supported by cvs2svn $8 * @date $Date: 2004-06-02 03:02:48$7 * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2004-06-02 23:29:21 $ 9 9 * 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 448 448 numElements = in->n; 449 449 450 out = psVectorRecycle(out, PS_TYPE_C32,numElements);450 out = psVectorRecycle(out, numElements, PS_TYPE_C32); 451 451 452 452 if (type == PS_TYPE_F32) { 453 453 // need to convert to complex 454 psC32* outVec = out-> vec.cf;455 psF32* inVec = in-> vec.f;454 psC32* outVec = out->data.C32; 455 psF32* inVec = in->data.F32; 456 456 for (unsigned int i=0;i<numElements;i++) { 457 457 outVec[i] = inVec[i]; 458 458 } 459 459 } else { 460 psC32* outVec = out-> vec.cf;461 psC32* inVec = in-> vec.cf;460 psC32* outVec = out->data.C32; 461 psC32* inVec = in->data.C32; 462 462 for (unsigned int i=0;i<numElements;i++) { 463 463 outVec[i] = inVec[i]; … … 466 466 467 467 plan = fftwf_plan_dft_1d(numElements, 468 (fftwf_complex*)out-> vec.cf,469 (fftwf_complex*)out-> vec.cf,468 (fftwf_complex*)out->data.C32, 469 (fftwf_complex*)out->data.C32, 470 470 direction, 471 471 P_FFTW_PLAN_RIGOR); … … 504 504 psLogMsg(__func__,PS_LOG_WARN,"Real portion of a non-Complex type called called for. " 505 505 "Just a vector copy was performed."); 506 out = psVectorRecycle(out, type,numElements);507 memcpy(out-> vec.v,in->vec.v,numElements*PSELEMTYPE_SIZEOF(type));506 out = psVectorRecycle(out,numElements,type); 507 memcpy(out->data.V,in->data.V,numElements*PSELEMTYPE_SIZEOF(type)); 508 508 return out; 509 509 } … … 511 511 if (type == PS_TYPE_C32) { 512 512 psF32* outVec; 513 psC32* inVec = in-> vec.cf;514 515 out = psVectorRecycle(out, PS_TYPE_F32,numElements);516 outVec = out-> vec.f;513 psC32* inVec = in->data.C32; 514 515 out = psVectorRecycle(out,numElements,PS_TYPE_F32); 516 outVec = out->data.F32; 517 517 518 518 for (unsigned int i=0;i<numElements;i++) { … … 548 548 "A zeroed vector was returned."); 549 549 out = psVectorRecycle(out,numElements,type); 550 memset(out-> vec.v,0,PSELEMTYPE_SIZEOF(type)*numElements);550 memset(out->data.V,0,PSELEMTYPE_SIZEOF(type)*numElements); 551 551 return out; 552 552 } … … 554 554 if (type == PS_TYPE_C32) { 555 555 psF32* outVec; 556 psC32* inVec = in-> vec.cf;557 558 out = psVectorRecycle(out, PS_TYPE_F32,numElements);559 outVec = out-> vec.f;556 psC32* inVec = in->data.C32; 557 558 out = psVectorRecycle(out,numElements, PS_TYPE_F32); 559 outVec = out->data.F32; 560 560 561 561 for (unsigned int i=0;i<numElements;i++) { … … 601 601 if (type == PS_TYPE_F32) { 602 602 psC32* outVec; 603 psF32* realVec = real-> vec.f;604 psF32* imagVec = imag-> vec.f;605 606 out = psVectorRecycle(out, PS_TYPE_C32,numElements);607 outVec = out-> vec.cf;603 psF32* realVec = real->data.F32; 604 psF32* imagVec = imag->data.F32; 605 606 out = psVectorRecycle(out,numElements, PS_TYPE_C32); 607 outVec = out->data.C32; 608 608 609 609 for (unsigned int i=0;i<numElements;i++) { … … 639 639 "Vector copy was performed instead."); 640 640 641 out = psVectorRecycle(out, type,numElements);642 memcpy(out-> vec.v,in->vec.v,PSELEMTYPE_SIZEOF(type)*numElements);641 out = psVectorRecycle(out,numElements,type); 642 memcpy(out->data.V,in->data.V,PSELEMTYPE_SIZEOF(type)*numElements); 643 643 return out; 644 644 } … … 646 646 if (type == PS_TYPE_C32) { 647 647 psC32* outVec; 648 psC32* inVec = in-> vec.cf;649 650 out = psVectorRecycle(out, PS_TYPE_C32,numElements);651 outVec = out-> vec.cf;648 psC32* inVec = in->data.C32; 649 650 out = psVectorRecycle(out,numElements,PS_TYPE_C32); 651 outVec = out->data.C32; 652 652 653 653 for (unsigned int i=0;i<numElements;i++) { … … 686 686 if (type == PS_TYPE_C32) { 687 687 psF32* outVec; 688 psC32* inVec = in-> vec.cf;688 psC32* inVec = in->data.C32; 689 689 psF32 real; 690 690 psF32 imag; 691 691 692 692 693 out = psVectorRecycle(out, PS_TYPE_F32,numElements);694 outVec = out-> vec.f;693 out = psVectorRecycle(out,numElements,PS_TYPE_F32); 694 outVec = out->data.F32; 695 695 696 696 for (unsigned int i=0;i<numElements;i++) {
Note:
See TracChangeset
for help on using the changeset viewer.
