WaveletBase class finished. Now to add timing

This commit is contained in:
Samuel Li 2016-07-11 18:22:12 -06:00
parent 53ab1eb8c4
commit 8fb53f4b72
4 changed files with 22 additions and 15 deletions

@ -51,7 +51,7 @@ public:
VTKM_CONT_EXPORT
ForwardTransform()
{
magicNum = 3.14159265;
magicNum = 0.0;
oddlow = oddhigh = true;
filterLen = approxLen = detailLen = 0;
this->SetStartPosition();

@ -30,11 +30,11 @@ void TestWavelets()
{
std::cout << "Testing Wavelets Worklet" << std::endl;
vtkm::Id signalLen = 20;
vtkm::Id sigLen = 40;
// make input data array handle
std::vector<vtkm::Float64> tmpVector;
for( vtkm::Id i = 0; i < signalLen + 8; i++ )
for( vtkm::Id i = 0; i < sigLen + 8; i++ )
tmpVector.push_back( i + 1 );
vtkm::cont::ArrayHandle<vtkm::Float64> input1DArray =
@ -54,7 +54,7 @@ void TestWavelets()
// initialize the worklet
vtkm::worklet::Wavelets::ForwardTransform forwardTransform;
forwardTransform.SetFilterLength( 9 );
forwardTransform.SetCoeffLength( 10, 10 );
forwardTransform.SetCoeffLength( sigLen/2, sigLen/2 );
forwardTransform.SetOddness( false, true );
vtkm::worklet::DispatcherMapField<vtkm::worklet::Wavelets::ForwardTransform>
dispatcher(forwardTransform);

@ -121,9 +121,16 @@ public:
}
// Returns maximum wavelet decompostion level
vtkm::Id GetWaveletMaxLevel( vtkm::Id s )
vtkm::Id GetWaveletMaxLevel( vtkm::Id sigInLen )
{
return 0;
if( ! this->filter )
return 0;
else {
vtkm::Id filterLen = this->filter->GetFilterLength();
vtkm::Id level;
this->WaveLengthValidate( sigInLen, filterLen, level );
return level;
}
}
protected:

@ -53,10 +53,10 @@ void forward_xform (
void print_coeffs( const double* cA, const double* cD, size_t num )
{
for( size_t i = 0; i < num; i++ )
{
std::cout << cA[i] << ", " << cD[i] << std::endl;
}
for( size_t i = 0; i < num; i++ )
{
std::cout << cA[i] << ", " << cD[i] << std::endl;
}
}
void create_array( double* buf, size_t num )
@ -67,15 +67,15 @@ void create_array( double* buf, size_t num )
int main( int argc, char* argv[] )
{
size_t sigLen = 20;
size_t sigLen = 40;
double buf[ sigLen+8 ];
create_array( buf, sigLen+8 );
size_t coeffLen = 10;
size_t coeffLen = sigLen/2;
double cA[coeffLen];
double cD[coeffLen];
for( size_t i = 0; i < coeffLen; i++ )
cA[i] = cD[i] = 3.14159265;
for( size_t i = 0; i < coeffLen; i++ )
cA[i] = cD[i] = 0.0;
const double* low_filter = hm4_44;
const double* high_filter = h4;
@ -86,5 +86,5 @@ int main( int argc, char* argv[] )
forward_xform( buf, sigLen, low_filter, high_filter, 9, cA, cD, oddlow, oddhigh );
print_coeffs( cA, cD, coeffLen );
print_coeffs( cA, cD, coeffLen );
}