blah2
A real-time passive radar
WienerHopf Class Reference

A class to implement a Wiener-Hopf clutter filter. More...

#include <WienerHopf.h>

Collaboration diagram for WienerHopf:
Collaboration graph

Public Member Functions

 WienerHopf (int32_t delayMin, int32_t delayMax, uint32_t nSamples)
 Constructor. More...
 
 ~WienerHopf ()
 Destructor. More...
 
bool process (IqData *x, IqData *y)
 Implement the clutter filter. More...
 

Private Attributes

int32_t delayMin
 Minimum clutter filter delay (bins). More...
 
int32_t delayMax
 Maximum clutter filter delay (bins). More...
 
uint32_t nBins
 Number of bins (delayMax - delayMin + 1). More...
 
uint32_t nSamples
 Number of samples per CPI. More...
 
bool success
 True if clutter filter processing is successful. More...
 
arma::cx_mat A
 Autocorrelation toeplitz matrix. More...
 
arma::cx_vec a
 Autocorrelation vector. More...
 
arma::cx_vec b
 Cross-correlation vector. More...
 
arma::cx_vec w
 Weights vector. More...
 
fftw_plan fftX
 FFTW plans for clutter filter processing. More...
 
fftw_plan fftY
 FFTW plans for clutter filter processing. More...
 
fftw_plan fftA
 FFTW plans for clutter filter processing. More...
 
fftw_plan fftB
 FFTW plans for clutter filter processing. More...
 
fftw_plan fftFiltX
 FFTW plans for clutter filter processing. More...
 
fftw_plan fftFiltW
 FFTW plans for clutter filter processing. More...
 
fftw_plan fftFilt
 FFTW plans for clutter filter processing. More...
 
std::complex< double > * dataX
 FFTW storage for clutter filter processing. More...
 
std::complex< double > * dataY
 FFTW storage for clutter filter processing. More...
 
std::complex< double > * dataOutX
 FFTW storage for clutter filter processing. More...
 
std::complex< double > * dataOutY
 FFTW storage for clutter filter processing. More...
 
std::complex< double > * dataA
 FFTW storage for clutter filter processing. More...
 
std::complex< double > * dataB
 FFTW storage for clutter filter processing. More...
 
std::complex< double > * filtX
 FFTW storage for clutter filter processing. More...
 
std::complex< double > * filtW
 FFTW storage for clutter filter processing. More...
 
std::complex< double > * filt
 FFTW storage for clutter filter processing. More...
 
std::deque< std::complex< double > > xData
 Deque storage for clutter filter processing. More...
 
std::deque< std::complex< double > > yData
 Deque storage for clutter filter processing. More...
 

Detailed Description

A class to implement a Wiener-Hopf clutter filter.

Implements a Wiener-Hopf filter. Uses Cholesky decomposition to speed up matrix inversion, as the Toeplitz matrix is positive-definite and Hermitian.

Author
30hours
Todo:
Fix the segmentation fault from clutter filter numerical instability.

Constructor & Destructor Documentation

◆ WienerHopf()

WienerHopf::WienerHopf ( int32_t  delayMin,
int32_t  delayMax,
uint32_t  nSamples 
)

Constructor.

Parameters
delayMinMinimum clutter filter delay (bins).
delayMaxMaximum clutter filter delay (bins).
nSamplesNumber of samples per CPI.
Returns
The object.

◆ ~WienerHopf()

WienerHopf::~WienerHopf ( )

Destructor.

Returns
Void.

Member Function Documentation

◆ process()

bool WienerHopf::process ( IqData x,
IqData y 
)

Implement the clutter filter.

Parameters
xReference samples.
ySurveillance samples.
Returns
True if clutter filter successful.

Member Data Documentation

◆ A

arma::cx_mat WienerHopf::A
private

Autocorrelation toeplitz matrix.

◆ a

arma::cx_vec WienerHopf::a
private

Autocorrelation vector.

◆ b

arma::cx_vec WienerHopf::b
private

Cross-correlation vector.

◆ dataA

std::complex<double> * WienerHopf::dataA
private

FFTW storage for clutter filter processing.

◆ dataB

std::complex<double> * WienerHopf::dataB
private

FFTW storage for clutter filter processing.

◆ dataOutX

std::complex<double> * WienerHopf::dataOutX
private

FFTW storage for clutter filter processing.

◆ dataOutY

std::complex<double> * WienerHopf::dataOutY
private

FFTW storage for clutter filter processing.

◆ dataX

std::complex<double>* WienerHopf::dataX
private

FFTW storage for clutter filter processing.

◆ dataY

std::complex<double> * WienerHopf::dataY
private

FFTW storage for clutter filter processing.

◆ delayMax

int32_t WienerHopf::delayMax
private

Maximum clutter filter delay (bins).

◆ delayMin

int32_t WienerHopf::delayMin
private

Minimum clutter filter delay (bins).

◆ fftA

fftw_plan WienerHopf::fftA
private

FFTW plans for clutter filter processing.

◆ fftB

fftw_plan WienerHopf::fftB
private

FFTW plans for clutter filter processing.

◆ fftFilt

fftw_plan WienerHopf::fftFilt
private

FFTW plans for clutter filter processing.

◆ fftFiltW

fftw_plan WienerHopf::fftFiltW
private

FFTW plans for clutter filter processing.

◆ fftFiltX

fftw_plan WienerHopf::fftFiltX
private

FFTW plans for clutter filter processing.

◆ fftX

fftw_plan WienerHopf::fftX
private

FFTW plans for clutter filter processing.

◆ fftY

fftw_plan WienerHopf::fftY
private

FFTW plans for clutter filter processing.

◆ filt

std::complex<double> * WienerHopf::filt
private

FFTW storage for clutter filter processing.

◆ filtW

std::complex<double> * WienerHopf::filtW
private

FFTW storage for clutter filter processing.

◆ filtX

std::complex<double> * WienerHopf::filtX
private

FFTW storage for clutter filter processing.

◆ nBins

uint32_t WienerHopf::nBins
private

Number of bins (delayMax - delayMin + 1).

◆ nSamples

uint32_t WienerHopf::nSamples
private

Number of samples per CPI.

◆ success

bool WienerHopf::success
private

True if clutter filter processing is successful.

◆ w

arma::cx_vec WienerHopf::w
private

Weights vector.

◆ xData

std::deque<std::complex<double> > WienerHopf::xData
private

Deque storage for clutter filter processing.

◆ yData

std::deque<std::complex<double> > WienerHopf::yData
private

Deque storage for clutter filter processing.


The documentation for this class was generated from the following files: