@@ -40,16 +40,25 @@ def design_filter(interpolation, decimation, fractional_bw):
40
40
if fractional_bw >= 0.5 or fractional_bw <= 0 :
41
41
raise ValueError , "Invalid fractional_bandwidth, must be in (0, 0.5)"
42
42
43
- beta = 5.0
44
- trans_width = 0.5 - fractional_bw
45
- mid_transition_band = 0.5 - trans_width / 2
46
-
43
+ beta = 7.0
44
+ halfband = 0.5
45
+ rate = float (interpolation )/ float (decimation )
46
+ if (rate >= 1.0 ):
47
+ trans_width = halfband - fractional_bw
48
+ mid_transition_band = halfband - trans_width / 2.0
49
+ else :
50
+ trans_width = rate * (halfband - fractional_bw )
51
+ mid_transition_band = rate * halfband - trans_width / 2.0
52
+
53
+ print trans_width , mid_transition_band
47
54
taps = filter .firdes .low_pass (interpolation , # gain
48
- 1 , # Fs
49
- mid_transition_band / interpolation , # trans mid point
50
- trans_width / interpolation , # transition width
55
+ interpolation , # Fs
56
+ mid_transition_band , # trans mid point
57
+ trans_width , # transition width
51
58
filter .firdes .WIN_KAISER ,
52
59
beta ) # beta
60
+
61
+ print len (taps )
53
62
return taps
54
63
55
64
@@ -90,13 +99,15 @@ def __init__(self, resampler_base,
90
99
if taps is None :
91
100
taps = design_filter (interpolation , decimation , fractional_bw )
92
101
93
- resampler = resampler_base (interpolation , decimation , taps )
102
+ self . resampler = resampler_base (interpolation , decimation , taps )
94
103
gr .hier_block2 .__init__ (self , "rational_resampler" ,
95
- gr .io_signature (1 , 1 , resampler .input_signature ().sizeof_stream_item (0 )),
96
- gr .io_signature (1 , 1 , resampler .output_signature ().sizeof_stream_item (0 )))
104
+ gr .io_signature (1 , 1 , self . resampler .input_signature ().sizeof_stream_item (0 )),
105
+ gr .io_signature (1 , 1 , self . resampler .output_signature ().sizeof_stream_item (0 )))
97
106
98
- self .connect (self , resampler , self )
107
+ self .connect (self , self . resampler , self )
99
108
109
+ def taps (self ):
110
+ return self .resampler .taps ()
100
111
101
112
class rational_resampler_fff (_rational_resampler_base ):
102
113
def __init__ (self , interpolation , decimation , taps = None , fractional_bw = None ):
0 commit comments