GNU Radio Manual and C++ API Reference 3.7.14.0
The Free & Open Software Radio Ecosystem
equalizer_lms2_impl.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2002 Free Software Foundation, Inc.
4 *
5 * This file is part of GNU Radio
6 *
7 * GNU Radio is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 3, or (at your option)
10 * any later version.
11 *
12 * GNU Radio is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with GNU Radio; see the file COPYING. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street,
20 * Boston, MA 02110-1301, USA.
21 */
22
23#ifndef _ATSC_EQUALIZER_LMS2_H_
24#define _ATSC_EQUALIZER_LMS2_H_
25
26#include <gnuradio/atsc/api.h>
28#include <stdio.h>
29#include <vector>
30
32{
33public:
36
37 virtual void reset();
38 virtual int ntaps() const;
39 virtual int npretaps() const;
40
41protected:
43 virtual void
44 filter_normal(const float* input_samples, float* output_samples, int nsamples);
45
46 virtual void filter_data_seg_sync(const float* input_samples,
47 float* output_samples,
48 int nsamples,
49 int offset);
50
51 virtual void filter_field_sync(const float* input_samples,
52 float* output_samples,
53 int nsamples,
54 int offset,
55 int which_field);
56
57private:
58 std::vector<double> d_taps_ff;
59 std::vector<double> d_taps_fb;
60 std::vector<float> d_old_output;
61
62 int d_output_ptr;
63
64 void filterN(const float* input_samples, float* output_samples, int nsamples);
65
66 void adaptN(const float* input_samples,
67 const float* training_pattern,
68 float* output_samples,
69 int nsamples);
70
71 float filter1(const float input[]);
72 float adapt1(const float input[], float ideal_output);
73};
74
75
76#endif /* _ATSC_EQUALIZER_LMS2_H_ */
Definition: equalizer_lms2_impl.h:32
virtual void filter_data_seg_sync(const float *input_samples, float *output_samples, int nsamples, int offset)
virtual void reset()
reset state (e.g., on channel change)
virtual int npretaps() const
how many taps are "in the future".
virtual int ntaps() const
how much history the input data stream requires.
virtual void filter_normal(const float *input_samples, float *output_samples, int nsamples)
FILE * trainingfile
Definition: equalizer_lms2_impl.h:42
virtual void filter_field_sync(const float *input_samples, float *output_samples, int nsamples, int offset, int which_field)
virtual ~atsci_equalizer_lms2()
abstract base class for ATSC equalizer
Definition: equalizer_impl.h:34
#define ATSC_API
Definition: gr-atsc/include/gnuradio/atsc/api.h:30