atsc_equalizer_lms2.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
#ifndef _ATSC_EQUALIZER_LMS2_H_
00024
#define _ATSC_EQUALIZER_LMS2_H_
00025
00026
#include <atsc_equalizer.h>
00027
#include <vector>
00028
#include <stdio.h>
00029
00030 class atsc_equalizer_lms2 :
public atsc_equalizer
00031 {
00032
public:
00033
atsc_equalizer_lms2 ();
00034
virtual ~atsc_equalizer_lms2 ();
00035
00036
virtual void reset ();
00037
virtual int ntaps ()
const;
00038
virtual int npretaps ()
const;
00039
00040
protected:
00041 FILE *
trainingfile;
00042
virtual void filter_normal (
const float *input_samples,
00043
float *output_samples,
00044
int nsamples);
00045
00046
virtual void filter_data_seg_sync (
const float *input_samples,
00047
float *output_samples,
00048
int nsamples,
00049
int offset);
00050
00051
virtual void filter_field_sync (
const float *input_samples,
00052
float *output_samples,
00053
int nsamples,
00054
int offset,
00055
int which_field);
00056
00057
private:
00058 std::vector<double>
d_taps_ff;
00059 std::vector<double>
d_taps_fb;
00060 std::vector<float>
d_old_output;
00061
00062 int d_output_ptr;
00063
00064
void filterN (
const float *input_samples,
00065
float *output_samples,
00066
int nsamples);
00067
00068
void adaptN (
const float *input_samples,
00069
const float *training_pattern,
00070
float *output_samples,
00071
int nsamples);
00072
00073
float filter1 (
const float input[]);
00074
float adapt1 (
const float input[],
float ideal_output);
00075
00076 };
00077
00078
00079
#endif
Generated on Wed Aug 4 02:22:03 2004 for GNU Radio by
1.3.8