Changeset 1033 for trunk/src/MathUtils2.cpp
- Timestamp:
- 04/26/06 13:51:58 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/MathUtils2.cpp
r983 r1033 27 27 //# AUSTRALIA 28 28 //# 29 //# $Id: 29 //# $Id:$ 30 30 //#--------------------------------------------------------------------------- 31 31 … … 42 42 template <class T> 43 43 void mathutil::hanning(Vector<T>& out, Vector<Bool>& outmask, 44 const Vector<T>& in, const Vector<Bool>& mask, 45 Bool relaxed, Bool ignoreOther) { 46 44 const Vector<T>& in, const Vector<Bool>& mask, 45 Bool relaxed, Bool ignoreOther) { 47 46 Vector< Vector<T> > weights(8); 48 47 Vector<Float> vals(3); … … 68 67 out.resize(in.nelements()); 69 68 outmask.resize(mask.nelements()); 70 71 69 // make special case for first and last 72 70 /// ...here 73 71 // loop from 1..n-2 74 uInt i = 1;75 VectorSTLIterator<T> outit(out);76 out it++;77 VectorSTLIterator<Bool> outmit(outmask);outmit++;72 out.resize(in.nelements()); 73 out[0] = in[0];out[out.nelements()-1] = in[in.nelements()-1]; 74 outmask.resize(mask.nelements()); 75 outmask = False; 78 76 uInt m;Vector<T>* w; 79 for (VectorSTLIterator<T> it = outit;it != out.end()-1;++it) { 80 77 for (uInt i=1; i < out.nelements()-1;++i) { 81 78 m = mask[i-1] + 2*mask[i] + 4*mask[i+1]; 82 79 w = &(weights[m]); 83 80 if (weighted[m]) { 84 (*it)= (*w)[0]*in[i-1] + (*w)[1]*in[i] + (*w)[2]*in[i+1];85 (*outmit)= True;81 out[i] = (*w)[0]*in[i-1] + (*w)[1]*in[i] + (*w)[2]*in[i+1]; 82 outmask[i] = True; 86 83 } else { // mask it 87 (*outmit) = False; 84 out[i] = in[i];//use arbitrary value 85 outmask[i] = False; 88 86 } 89 ++i;90 ++outmit;91 87 } 92 88 }
Note: See TracChangeset
for help on using the changeset viewer.