mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-21 11:35:43 +00:00
successfully test the Extend1D function to return a regular array handle
This commit is contained in:
parent
acc0b694ce
commit
c54ad2fd13
@ -104,6 +104,7 @@ WaveletCompressor::WaveDecompose( const SignalArrayType &sigIn, // Input
|
||||
#undef VAL
|
||||
|
||||
delete[] L;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -165,7 +165,6 @@ protected:
|
||||
|
||||
void WaveLengthValidate( vtkm::Id sigInLen, vtkm::Id filterLength, vtkm::Id &level)
|
||||
{
|
||||
// *lev = (int) (log((double) sigInLen / (double) (waveLength)) / log(2.0)) + 1;
|
||||
if( sigInLen < filterLength )
|
||||
level = 0;
|
||||
else
|
||||
|
@ -48,7 +48,8 @@ public:
|
||||
|
||||
// Func: Extend 1D signal
|
||||
template< typename SigInArrayType, typename SigExtendedArrayType >
|
||||
vtkm::Id Extend1D( const SigInArrayType &sigIn, // Input
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
vtkm::Id Extend1DConcat( const SigInArrayType &sigIn, // Input
|
||||
SigExtendedArrayType &sigOut, // Output
|
||||
vtkm::Id addLen,
|
||||
vtkm::filter::internal::DWTMode leftExtMethod,
|
||||
@ -121,12 +122,38 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Func: Extend 1D signal
|
||||
template< typename ArrayType >
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
vtkm::Id Extend1D( const ArrayType &sigIn, // Input
|
||||
ArrayType &sigOut, // Output
|
||||
vtkm::Id addLen,
|
||||
vtkm::filter::internal::DWTMode leftExtMethod,
|
||||
vtkm::filter::internal::DWTMode rightExtMethod )
|
||||
{
|
||||
typedef typename ArrayType::ValueType ValueType;
|
||||
typedef vtkm::cont::ArrayHandle< ValueType > ExtensionArrayType;
|
||||
typedef vtkm::cont::ArrayHandleConcatenate< ExtensionArrayType, ArrayType>
|
||||
ArrayConcat;
|
||||
typedef vtkm::cont::ArrayHandleConcatenate< ArrayConcat, ExtensionArrayType>
|
||||
ArrayConcat2;
|
||||
|
||||
ArrayConcat2 sigOutTmp;
|
||||
|
||||
Extend1DConcat( sigIn, sigOutTmp, addLen, leftExtMethod, rightExtMethod );
|
||||
|
||||
vtkm::cont::DeviceAdapterAlgorithm< VTKM_DEFAULT_DEVICE_ADAPTER_TAG>::Copy(
|
||||
sigOutTmp, sigOut );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// Func:
|
||||
// Performs one level of 1D discrete wavelet transform
|
||||
// It takes care of boundary conditions, etc.
|
||||
template< typename SignalArrayType, typename CoeffArrayType>
|
||||
VTKM_EXEC_CONT_EXPORT
|
||||
vtkm::Id DWT1D( const SignalArrayType &sigIn, // Input
|
||||
CoeffArrayType &coeffOut, // Output: cA followed by cD
|
||||
vtkm::Id L[3] ) // Output: how many cA and cD.
|
||||
@ -221,6 +248,7 @@ public:
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Func:
|
||||
// Performs one level of inverse wavelet transform
|
||||
// It takes care of boundary conditions, etc.
|
||||
@ -316,7 +344,7 @@ public:
|
||||
vtkm::cont::DeviceAdapterAlgorithm< VTKM_DEFAULT_DEVICE_ADAPTER_TAG >::Copy
|
||||
(cA, cABasic);
|
||||
|
||||
this->Extend1D( cABasic, cATemp, addLen, cALeftMode, cARightMode );
|
||||
this->Extend1DConcat( cABasic, cATemp, addLen, cALeftMode, cARightMode );
|
||||
}
|
||||
if( cDPadLen > 0 )
|
||||
{
|
||||
@ -332,7 +360,7 @@ public:
|
||||
vtkm::cont::DeviceAdapterAlgorithm< VTKM_DEFAULT_DEVICE_ADAPTER_TAG >::Copy
|
||||
( cDPad, cDBasic );
|
||||
|
||||
this->Extend1D( cDBasic, cDTemp, addLen, cDLeftMode, cDRightMode );
|
||||
this->Extend1DConcat( cDBasic, cDTemp, addLen, cDLeftMode, cDRightMode );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -31,22 +31,24 @@
|
||||
void TestExtend1D()
|
||||
{
|
||||
// make input data array handle
|
||||
vtkm::Id sigLen = 20;
|
||||
std::vector<vtkm::Float64> tmpVector;
|
||||
for( vtkm::Id i = 0; i < sigLen; i++ )
|
||||
tmpVector.push_back( static_cast<vtkm::Float64>(i) );
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Float64> inputArray =
|
||||
vtkm::cont::make_ArrayHandle(tmpVector);
|
||||
|
||||
vtkm::filter::internal::WaveletDWT w("CDF9/7");
|
||||
typedef vtkm::Float64 T;
|
||||
typedef vtkm::cont::ArrayHandle<T> ArrayType;
|
||||
vtkm::Id sigLen = 20;
|
||||
std::vector<T> tmpVector;
|
||||
for( vtkm::Id i = 0; i < sigLen; i++ )
|
||||
tmpVector.push_back( static_cast<T>(i) );
|
||||
|
||||
vtkm::cont::ArrayHandle<T> inputArray =
|
||||
vtkm::cont::make_ArrayHandle(tmpVector);
|
||||
ArrayType outputArray;
|
||||
|
||||
vtkm::filter::internal::WaveletDWT w("CDF9/7");
|
||||
/*
|
||||
typedef vtkm::cont::ArrayHandleConcatenate< ArrayType, ArrayType>
|
||||
ArrayConcat;
|
||||
typedef vtkm::cont::ArrayHandleConcatenate< ArrayConcat, ArrayType > ArrayConcat2;
|
||||
|
||||
ArrayConcat2 outputArray;
|
||||
*/
|
||||
w.Extend1D( inputArray, outputArray, 4,
|
||||
vtkm::filter::internal::SYMW, vtkm::filter::internal::SYMW );
|
||||
|
||||
@ -143,9 +145,9 @@ void TestWaveDecompose()
|
||||
void TestWaveletCompressor()
|
||||
{
|
||||
std::cout << "Welcome to WaveletCompressorFilter test program :) " << std::endl;
|
||||
//TestExtend1D();
|
||||
TestExtend1D();
|
||||
//TestDWTIDWT1D();
|
||||
TestWaveDecompose();
|
||||
//TestWaveDecompose();
|
||||
}
|
||||
|
||||
int UnitTestWaveletCompressorFilter(int, char *[])
|
||||
|
Loading…
Reference in New Issue
Block a user