GNU Radio's DPD Package
LMS_postdistorter_impl.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2020 gr-dpd author.
4  *
5  * This is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3, or (at your option)
8  * any later version.
9  *
10  * This software is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this software; see the file COPYING. If not, write to
17  * the Free Software Foundation, Inc., 51 Franklin Street,
18  * Boston, MA 02110-1301, USA.
19  */
20 
21 #ifndef INCLUDED_DPD_LMS_POSTDISTORTER_IMPL_H
22 #define INCLUDED_DPD_LMS_POSTDISTORTER_IMPL_H
23 
24 #include <dpd/LMS_postdistorter.h>
25 #include <armadillo>
26 using namespace arma;
27 
28 namespace gr {
29 namespace dpd {
30 
32 {
33 private:
34  std::vector<int> d_dpd_params;
35  int K_a, K_b, L_a, L_b, M_b;
36  int M;
37  int d_iter_limit;
38  std::string str;
39  int iteration;
40 
41  cx_mat w_iMinus1;
42  const int sreg_len = 50;
43  gr_complexd sreg[50];
44  const gr_complexd* ptr_sreg = sreg;
45  gr_complexd pa_input, error;
46 
47  std::vector<gr_complexd> taps;
48 
49 public:
50  LMS_postdistorter_impl(const std::vector<int>& dpd_params,
51  int iter_limit,
52  std::string method);
54 
55  // Least Squares Estimation utility
56  cx_mat ls_estimation(cx_mat A, gr_complexd y);
57  // Genrates shift-structured GMP vector
58  void gen_GMPvector(const gr_complexd* const in,
59  int item,
60  int K_a,
61  int L_a,
62  int K_b,
63  int M_b,
64  int L_b,
65  cx_colvec& GMP_vector);
66  // Where all the action really happens
67  int work(int noutput_items,
68  gr_vector_const_void_star& input_items,
69  gr_vector_void_star& output_items);
70 };
71 
72 } // namespace dpd
73 } // namespace gr
74 
75 #endif /* INCLUDED_DPD_LMS_POSTDISTORTER_IMPL_H */
LMS based Algorithm implemented to estimate the coefficients of the behaviorial model (GMP) of the Po...
Definition: LMS_postdistorter.h:48
Definition: gain_phase_calibrate.h:14
Definition: LMS_postdistorter_impl.h:31