00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
#ifndef _GR_FIRDES_H_
00024
#define _GR_FIRDES_H_
00025
00026
#include <vector>
00027
#include <cmath>
00028
using std::vector;
00029
00034 class gr_firdes {
00035
public:
00036
00037 enum win_type {
00038
WIN_HAMMING = 0,
00039
WIN_HANN = 1,
00040
WIN_BLACKMAN = 2,
00041
WIN_RECTANGULAR = 3
00042 };
00043
00044
00045
00060
static vector<float>
00061
low_pass (
double gain,
00062
double sampling_freq,
00063
double cutoff_freq,
00064
double transition_width,
00065 win_type window = WIN_HAMMING,
00066
double beta = 6.76);
00067
00082
static vector<float>
00083
high_pass (
double gain,
00084
double sampling_freq,
00085
double cutoff_freq,
00086
double transition_width,
00087 win_type window = WIN_HAMMING,
00088
double beta = 6.76);
00089
00105
static vector<float>
00106
band_pass (
double gain,
00107
double sampling_freq,
00108
double low_cutoff_freq,
00109
double high_cutoff_freq,
00110
double transition_width,
00111 win_type window = WIN_HAMMING,
00112
double beta = 6.76);
00113
00114
00130
static vector<float>
00131
band_reject (
double gain,
00132
double sampling_freq,
00133
double low_cutoff_freq,
00134
double high_cutoff_freq,
00135
double transition_width,
00136 win_type window = WIN_HAMMING,
00137
double beta = 6.76);
00138
00145
static vector<float>
00146
hilbert (
unsigned int ntaps,
00147 win_type windowtype = WIN_RECTANGULAR,
00148
double beta = 6.76);
00149
00159
static vector<float>
00160
root_raised_cosine (
double gain,
00161
double sampling_freq,
00162
double symbol_rate,
00163
double alpha,
00164
int ntaps);
00165
00174
static vector<float>
00175
gaussian (
double gain,
00176
double sampling_freq,
00177
double symbol_rate,
00178
double bt,
00179
int ntaps);
00180
00181
00182
static vector<float>
gr_firdes::window (win_type type,
int ntaps,
double beta);
00183
00184
private:
00185
static void sanity_check_1f (
double sampling_freq,
double f1,
00186
double transition_width);
00187
static void sanity_check_2f (
double sampling_freq,
double f1,
double f2,
00188
double transition_width);
00189
00190
static int compute_ntaps (
double sampling_freq,
00191
double transition_width,
00192 win_type window_type,
double beta);
00193 };
00194
00195
#endif