blah2
A real-time passive radar
WienerHopf.h
Go to the documentation of this file.
1 
9 #ifndef WIENERHOPF_H
10 #define WIENERHOPF_H
11 
12 #include "data/IqData.h"
13 #include <stdint.h>
14 #include <fftw3.h>
15 #include <armadillo>
16 
18 {
19 private:
21  int32_t delayMin;
22 
24  int32_t delayMax;
25 
27  uint32_t nBins;
28 
30  uint32_t nSamples;
31 
33  bool success;
34 
39 
42  std::complex<double> *dataX, *dataY, *dataOutX, *dataOutY, *dataA, *dataB, *filtX, *filtW, *filt;
44 
47  std::deque<std::complex<double>> xData, yData;
49 
51  arma::cx_mat A;
52 
54  arma::cx_vec a;
55 
57  arma::cx_vec b;
58 
60  arma::cx_vec w;
61 
62 public:
68  WienerHopf(int32_t delayMin, int32_t delayMax, uint32_t nSamples);
69 
72  ~WienerHopf();
73 
78  bool process(IqData *x, IqData *y);
79 };
80 
81 #endif
A class to store IQ data.
Definition: IqData.h:17
A class to implement a Wiener-Hopf clutter filter.
Definition: WienerHopf.h:18
fftw_plan fftFiltW
FFTW plans for clutter filter processing.
Definition: WienerHopf.h:37
bool process(IqData *x, IqData *y)
Implement the clutter filter.
Definition: WienerHopf.cpp:58
~WienerHopf()
Destructor.
Definition: WienerHopf.cpp:47
arma::cx_mat A
Autocorrelation toeplitz matrix.
Definition: WienerHopf.h:51
arma::cx_vec a
Autocorrelation vector.
Definition: WienerHopf.h:54
std::deque< std::complex< double > > xData
Deque storage for clutter filter processing.
Definition: WienerHopf.h:47
std::complex< double > * dataX
FFTW storage for clutter filter processing.
Definition: WienerHopf.h:42
int32_t delayMin
Minimum clutter filter delay (bins).
Definition: WienerHopf.h:21
bool success
True if clutter filter processing is successful.
Definition: WienerHopf.h:33
fftw_plan fftB
FFTW plans for clutter filter processing.
Definition: WienerHopf.h:37
fftw_plan fftA
FFTW plans for clutter filter processing.
Definition: WienerHopf.h:37
uint32_t nBins
Number of bins (delayMax - delayMin + 1).
Definition: WienerHopf.h:27
std::complex< double > * dataB
FFTW storage for clutter filter processing.
Definition: WienerHopf.h:42
fftw_plan fftFiltX
FFTW plans for clutter filter processing.
Definition: WienerHopf.h:37
arma::cx_vec w
Weights vector.
Definition: WienerHopf.h:60
std::complex< double > * dataOutX
FFTW storage for clutter filter processing.
Definition: WienerHopf.h:42
int32_t delayMax
Maximum clutter filter delay (bins).
Definition: WienerHopf.h:24
uint32_t nSamples
Number of samples per CPI.
Definition: WienerHopf.h:30
std::complex< double > * dataA
FFTW storage for clutter filter processing.
Definition: WienerHopf.h:42
fftw_plan fftY
FFTW plans for clutter filter processing.
Definition: WienerHopf.h:37
std::complex< double > * filtX
FFTW storage for clutter filter processing.
Definition: WienerHopf.h:42
WienerHopf(int32_t delayMin, int32_t delayMax, uint32_t nSamples)
Constructor.
Definition: WienerHopf.cpp:7
fftw_plan fftX
FFTW plans for clutter filter processing.
Definition: WienerHopf.h:37
fftw_plan fftFilt
FFTW plans for clutter filter processing.
Definition: WienerHopf.h:37
std::complex< double > * dataOutY
FFTW storage for clutter filter processing.
Definition: WienerHopf.h:42
std::complex< double > * dataY
FFTW storage for clutter filter processing.
Definition: WienerHopf.h:42
std::complex< double > * filt
FFTW storage for clutter filter processing.
Definition: WienerHopf.h:42
arma::cx_vec b
Cross-correlation vector.
Definition: WienerHopf.h:57
std::deque< std::complex< double > > yData
Deque storage for clutter filter processing.
Definition: WienerHopf.h:47
std::complex< double > * filtW
FFTW storage for clutter filter processing.
Definition: WienerHopf.h:42