blah2
A real-time passive radar
Ambiguity.h
Go to the documentation of this file.
1 
9 #pragma once
10 
11 #include "data/IqData.h"
12 #include "data/Map.h"
14 #include <stdint.h>
15 #include <fftw3.h>
16 #include <memory>
17 
18 class Ambiguity
19 {
20 
21 public:
22 
23  using Complex = std::complex<double>;
24 
26  double process_time_ms{0};
27  double range_fft_time_ms{0};
29  };
30 
31 
41  Ambiguity(int32_t delayMin, int32_t delayMax, int32_t dopplerMin, int32_t dopplerMax, uint32_t fs, uint32_t n, bool roundHamming = false);
42 
45  ~Ambiguity();
46 
52 
53  double doppler_middle() const { return dopplerMiddle_; }
54 
55  uint16_t delay_bin_count() const { return nDelayBins_; }
56 
57  uint16_t doppler_bin_count() const { return nDopplerBins_; }
58 
59  uint16_t corr_samples_per_pulse() const { return nCorr_; }
60 
61  double cpi_length_seconds() const { return cpi_; }
62 
63  uint32_t fft_bin_count() const { return nfft_; }
64 
66 private:
68  int32_t delayMin_;
69 
71  int32_t delayMax_;
72 
74  int32_t dopplerMin_;
75 
77  int32_t dopplerMax_;
78 
80  uint32_t fs_;
81 
83  uint32_t nSamples_;
84 
87 
89  uint16_t nDelayBins_;
90 
92  uint16_t nDopplerBins_;
93 
95  uint16_t nCorr_;
96 
98  double cpi_;
99 
101  fftw_plan fftXi_;
102  fftw_plan fftYi_;
103  fftw_plan fftZi_;
104  fftw_plan fftDoppler_;
105 
108  std::vector<Complex> dataXi_;
109  std::vector<Complex> dataYi_;
110  std::vector<Complex> dataZi_;
111  std::vector<Complex> dataCorr_;
112  std::vector<Complex> dataDoppler_;
114 
116  uint32_t nfft_;
117 
120  std::vector<Complex> corr_;
121  std::vector<Complex> delayProfile_;
123 
125  std::unique_ptr<Map<Complex>> map_;
126 
128 };
129 
130 std::ostream& operator<<(std::ostream& str, const Ambiguity::PerformanceStats& stats);
std::ostream & operator<<(std::ostream &str, const Ambiguity::PerformanceStats &stats)
Definition: Ambiguity.cpp:186
A class to implement a ambiguity map processing.
Definition: Ambiguity.h:19
fftw_plan fftYi_
Definition: Ambiguity.h:102
std::complex< double > Complex
Definition: Ambiguity.h:23
std::vector< Complex > dataCorr_
FFTW storage for ambiguity processing.
Definition: Ambiguity.h:111
std::vector< Complex > corr_
Vector storage for ambiguity processing.
Definition: Ambiguity.h:120
std::vector< Complex > dataZi_
FFTW storage for ambiguity processing.
Definition: Ambiguity.h:110
uint16_t delay_bin_count() const
Definition: Ambiguity.h:55
Map< Complex > * process(IqData *x, IqData *y)
Implement the ambiguity processor.
Definition: Ambiguity.cpp:88
fftw_plan fftDoppler_
Definition: Ambiguity.h:104
int32_t dopplerMin_
Minimum Doppler (Hz).
Definition: Ambiguity.h:74
uint32_t fft_bin_count() const
Definition: Ambiguity.h:63
PerformanceStats latest_performance_
Definition: Ambiguity.h:127
uint32_t nfft_
Number of samples to perform FFT per pulse.
Definition: Ambiguity.h:116
std::vector< Complex > dataXi_
FFTW storage for ambiguity processing.
Definition: Ambiguity.h:108
double dopplerMiddle_
Center of Doppler bins (Hz).
Definition: Ambiguity.h:86
PerformanceStats get_latest_performance() const
Definition: Ambiguity.h:65
uint16_t nCorr_
Number of correlation samples per pulse.
Definition: Ambiguity.h:95
int32_t delayMax_
Maximum delay (bins).
Definition: Ambiguity.h:71
double cpi_length_seconds() const
Definition: Ambiguity.h:61
double doppler_middle() const
Definition: Ambiguity.h:53
std::vector< Complex > delayProfile_
Vector storage for ambiguity processing.
Definition: Ambiguity.h:121
uint32_t nSamples_
Number of samples.
Definition: Ambiguity.h:83
int32_t delayMin_
Minimum delay (bins).
Definition: Ambiguity.h:68
uint16_t nDopplerBins_
Number of Doppler bins.
Definition: Ambiguity.h:92
int32_t dopplerMax_
Maximum Doppler (Hz).
Definition: Ambiguity.h:77
~Ambiguity()
Destructor.
Definition: Ambiguity.cpp:80
uint32_t fs_
Sampling frequency (Hz).
Definition: Ambiguity.h:80
std::vector< Complex > dataYi_
FFTW storage for ambiguity processing.
Definition: Ambiguity.h:109
fftw_plan fftXi_
FFTW plans for ambiguity processing.
Definition: Ambiguity.h:101
std::vector< Complex > dataDoppler_
FFTW storage for ambiguity processing.
Definition: Ambiguity.h:112
uint16_t doppler_bin_count() const
Definition: Ambiguity.h:57
Ambiguity(int32_t delayMin, int32_t delayMax, int32_t dopplerMin, int32_t dopplerMax, uint32_t fs, uint32_t n, bool roundHamming=false)
Constructor.
Definition: Ambiguity.cpp:11
std::unique_ptr< Map< Complex > > map_
Map to store result.
Definition: Ambiguity.h:125
double cpi_
True CPI time (s).
Definition: Ambiguity.h:98
uint16_t corr_samples_per_pulse() const
Definition: Ambiguity.h:59
uint16_t nDelayBins_
Number of delay bins.
Definition: Ambiguity.h:89
fftw_plan fftZi_
Definition: Ambiguity.h:103
A class to store IQ data.
Definition: IqData.h:17
A class to store an ambiguity map.
Definition: Map.h:20
Definition: Ambiguity.h:25
double range_fft_time_ms
Definition: Ambiguity.h:27
double doppler_fft_time_ms
Definition: Ambiguity.h:28
double process_time_ms
Definition: Ambiguity.h:26