GNU Radio's DPD Package
GMP_model_PA_impl.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2020 Alekh Gupta
4  *
5  * SPDX-License-Identifier: GPL-3.0-or-later
6  */
7 
8 #ifndef INCLUDED_DPD_GMP_MODEL_PA_IMPL_H
9 #define INCLUDED_DPD_GMP_MODEL_PA_IMPL_H
10 
11 #include <dpd/GMP_model_PA.h>
12 #include <math.h>
13 #include <algorithm>
14 #include <armadillo>
15 using std::vector;
16 using namespace arma;
17 
18 namespace gr {
19 namespace dpd {
20 
22 {
23 private:
24  int K_a; // Order I
25  int L_a; // Memory Depth I
26  int K_b; // Order II
27  int M_b; // Cross-Terms Index
28  int L_b; // Memory Depth II
29  int M; // No. of Coefficients
30  std::string Mode_vl; // Mode of Operation
31  cx_fmat coeff_1; // Coefficient Vector for signal-and-aligned envelope
32  cx_fcube coeff_2; // Coefficient Vector for signal-and-lagging envelope
33 
34 public:
35  GMP_model_PA_impl(int model_param1,
36  int model_param2,
37  int model_param3,
38  int model_param4,
39  int model_param5,
40  std::string mode,
41  const std::vector<gr_complex>& coeff1,
42  const std::vector<gr_complex>& coeff2);
44 
45  // Where all the action really happens
46  int work(int noutput_items,
47  gr_vector_const_void_star& input_items,
48  gr_vector_void_star& output_items);
49  // Copies Coefficient vectors into local variable vectors
50  void initialise_Coefficients(const std::vector<gr_complex>& coeff1,
51  const std::vector<gr_complex>& coeff2);
52  // Generates of shift-structured GMP vector
53  void gen_GMP_vector(const gr_complex* const in,
54  int item,
55  int K_a,
56  int L_a,
57  int K_b,
58  int M_b,
59  int L_b,
60  cx_fcolvec& GMP_vector);
61 };
62 
63 } // namespace dpd
64 } // namespace gr
65 
66 #endif /* INCLUDED_DPD_GMP_MODEL_PA_IMPL_H */
Definition: GMP_model_PA_impl.h:21
Definition: gain_phase_calibrate.h:14
Implementation of Generalised Memory Polynomial model based Power Amplifier. (Complex input...
Definition: GMP_model_PA.h:38