Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

clHankel Class Reference

Class implementation of (modified) Hankel-transform. More...

#include <Hankel.hh>

Collaboration diagram for clHankel:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 clHankel ()
 ~clHankel ()
void Initialize (long, const float *)
 Initialize Hankel transform.

void Initialize (long, const double *)
void Uninitialize ()
 Uninitialize, destructor also does this.

void Process0 (float *, const float *)
 Process data (0th order).

void Process0 (double *, const double *)
void Process1 (float *, const float *)
 Process data (1st order).

void Process1 (double *, const double *)

Private Member Functions

void InitAbel (const float *)
 Initialize Abel transformer.

void InitAbel (const double *)
void DoAbel (float *, const float *)
 Do Abel transform.

void DoAbel (double *, const double *)
void UninitAbel ()
 Unintialize Abel transformer.


Private Attributes

long lSize
long lFFTSize
float fOutScale0
float fOutScale1
double dOutScale0
double dOutScale1
clDSPAlloc A
clDSPAlloc B0
clDSPAlloc B1
clDSPAlloc GX
clDSPAlloc GK
clDSPOp DSP

Detailed Description

Class implementation of (modified) Hankel-transform.

Author:
Colorado School of Mines

Jussi Laako

Source converted from cwplib (by Dave Hale and Lydia Deng / Colorado School of Mines).
Transform is significantly sped-up by doing Abel-transform followed by inverse-FFT.
References
Hansen, E. W., 1985, Fast Hankel transform algorithm: IEEE Trans. on Acoustics, Speech and Signal Processing, v. ASSP-33, n. 3, p. 666-671. (Beware of several errors in the equations in this paper!)

Definition at line 58 of file Hankel.hh.


Constructor & Destructor Documentation

clHankel::clHankel  ) 
 

Definition at line 229 of file Hankel.cc.

clHankel::~clHankel  ) 
 

Definition at line 235 of file Hankel.cc.

References Uninitialize().


Member Function Documentation

void clHankel::InitAbel const float *   )  [private]
 

Initialize Abel transformer.

Parameters:
NullPtr NULL pointer

Definition at line 89 of file Hankel.cc.

References A, ABEL_NSE, B0, B1, fpH, fpLambda, and clAlloc::Size().

Referenced by Initialize().

void clHankel::InitAbel const double *   )  [private]
 

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 118 of file Hankel.cc.

References A, ABEL_NSE, B0, B1, fpH, fpLambda, and clAlloc::Size().

void clHankel::DoAbel float *  ,
const float * 
[private]
 

Do Abel transform.

Parameters:
Dest Destination
Src Source

Definition at line 147 of file Hankel.cc.

References A, ABEL_NSE, B0, B1, and clAlloc::GetPtr().

Referenced by Process0(), and Process1().

void clHankel::DoAbel double *  ,
const double * 
[private]
 

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 184 of file Hankel.cc.

References A, ABEL_NSE, B0, B1, and clAlloc::GetPtr().

void clHankel::UninitAbel  )  [private]
 

Unintialize Abel transformer.

Definition at line 221 of file Hankel.cc.

References A, B0, B1, and clAlloc::Free().

Referenced by Uninitialize().

void clHankel::Initialize long  ,
const float * 
 

Initialize Hankel transform.

The NULL pointer is used make C++ compiler select correct datatype for the transform from overloaded method set.

Parameters:
Size Window size
NullPtr NULL pointer

Definition at line 241 of file Hankel.cc.

References clDSPOp::FFTInitialize(), fOutScale0, fOutScale1, GK, GX, InitAbel(), clAlloc::Size(), and stSCplx.

void clHankel::Initialize long  ,
const double * 
 

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 255 of file Hankel.cc.

References dOutScale0, dOutScale1, clDSPOp::FFTInitialize(), GK, GX, InitAbel(), clAlloc::Size(), and stDCplx.

void clHankel::Uninitialize  ) 
 

Uninitialize, destructor also does this.

Definition at line 269 of file Hankel.cc.

References clAlloc::Free(), GK, GX, and UninitAbel().

Referenced by ~clHankel().

void clHankel::Process0 float *  ,
const float * 
 

Process data (0th order).

Definition:

\[h_{0}(k)=\int_{0}^{\infty}rj_{0}(kr)f(r)\mathrm{d}r\]

Note:
Input and output is window size / 2 + 1!
Parameters:
Dest Destination
Src Source

Definition at line 278 of file Hankel.cc.

References DoAbel(), GK, GX, _sSCplx::I, clDSPOp::IFFTo(), _sSCplx::R, stpSCplx, and stSCplx.

void clHankel::Process0 double *  ,
const double * 
 

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 319 of file Hankel.cc.

References DoAbel(), GK, GX, _sDCplx::I, clDSPOp::IFFTo(), _sDCplx::R, stDCplx, and stpDCplx.

void clHankel::Process1 float *  ,
const float * 
 

Process data (1st order).

Definition:

\[h_{1}(k)=\int_{0}^{\infty}rj_{1}(kr)f(r)\mathrm{d}r\]

Note:
Input and output is window size / 2 + 1!
Parameters:
Dest Destination
Src Source

Definition at line 360 of file Hankel.cc.

References DoAbel(), GK, GX, _sSCplx::I, clDSPOp::IFFTo(), _sSCplx::R, stpSCplx, and stSCplx.

void clHankel::Process1 double *  ,
const double * 
 

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 401 of file Hankel.cc.

References DoAbel(), GK, GX, _sDCplx::I, clDSPOp::IFFTo(), _sDCplx::R, stDCplx, and stpDCplx.


Member Data Documentation

long clHankel::lSize [private]
 

Definition at line 60 of file Hankel.hh.

long clHankel::lFFTSize [private]
 

Definition at line 61 of file Hankel.hh.

float clHankel::fOutScale0 [private]
 

Definition at line 62 of file Hankel.hh.

Referenced by Initialize().

float clHankel::fOutScale1 [private]
 

Definition at line 63 of file Hankel.hh.

Referenced by Initialize().

double clHankel::dOutScale0 [private]
 

Definition at line 64 of file Hankel.hh.

Referenced by Initialize().

double clHankel::dOutScale1 [private]
 

Definition at line 65 of file Hankel.hh.

Referenced by Initialize().

clDSPAlloc clHankel::A [private]
 

Definition at line 66 of file Hankel.hh.

Referenced by DoAbel(), InitAbel(), and UninitAbel().

clDSPAlloc clHankel::B0 [private]
 

Definition at line 67 of file Hankel.hh.

Referenced by DoAbel(), InitAbel(), and UninitAbel().

clDSPAlloc clHankel::B1 [private]
 

Definition at line 68 of file Hankel.hh.

Referenced by DoAbel(), InitAbel(), and UninitAbel().

clDSPAlloc clHankel::GX [private]
 

Definition at line 69 of file Hankel.hh.

Referenced by Initialize(), Process0(), Process1(), and Uninitialize().

clDSPAlloc clHankel::GK [private]
 

Definition at line 70 of file Hankel.hh.

Referenced by Initialize(), Process0(), Process1(), and Uninitialize().

clDSPOp clHankel::DSP [private]
 

Definition at line 71 of file Hankel.hh.


The documentation for this class was generated from the following files:
Generated on Tue Mar 2 19:47:11 2004 for libDSP by doxygen 1.3.6