| 242 | | |
|---|
| | 243 | def set_scale(self, freq): |
|---|
| | 244 | x = max(abs(self.fftsink.sample_rate), abs(self.fftsink.baseband_freq)) |
|---|
| | 245 | if x >= 1e9: |
|---|
| | 246 | self._scale_factor = 1e-9 |
|---|
| | 247 | self._units = "GHz" |
|---|
| | 248 | self._format = "%3.6f" |
|---|
| | 249 | elif x >= 1e6: |
|---|
| | 250 | self._scale_factor = 1e-6 |
|---|
| | 251 | self._units = "MHz" |
|---|
| | 252 | self._format = "%3.3f" |
|---|
| | 253 | else: |
|---|
| | 254 | self._scale_factor = 1e-3 |
|---|
| | 255 | self._units = "kHz" |
|---|
| | 256 | self._format = "%3.3f" |
|---|
| | 257 | |
|---|
| | 258 | def set_baseband_freq(self, baseband_freq): |
|---|
| | 259 | self.set_scale(baseband_freq) |
|---|
| | 260 | self.fftsink.set_baseband_freq(baseband_freq) |
|---|
| | 261 | |
|---|
| 274 | | x_vals = ((numpy.arange (L/2) |
|---|
| 275 | | * (self.fftsink.sample_rate * sf / L)) |
|---|
| 276 | | + self.fftsink.baseband_freq * sf) |
|---|
| 277 | | self.points = numpy.zeros((len(x_vals), 2), numpy.float64) |
|---|
| 278 | | self.points[:,0] = x_vals |
|---|
| 279 | | self.points[:,1] = dB[0:L/2] |
|---|
| | 279 | x_vals = ((numpy.arange (L/2) * (self.fftsink.sample_rate |
|---|
| | 280 | * self._scale_factor / L)) |
|---|
| | 281 | + self.fftsink.baseband_freq * self._scale_factor) |
|---|
| | 282 | self._points = numpy.zeros((len(x_vals), 2), numpy.float64) |
|---|
| | 283 | self._points[:,0] = x_vals |
|---|
| | 284 | self._points[:,1] = dB[0:L/2] |
|---|
| 283 | | * (self.fftsink.sample_rate * sf / L)) |
|---|
| 284 | | + self.fftsink.baseband_freq * sf) |
|---|
| 285 | | self.points = numpy.zeros((len(x_vals), 2), numpy.float64) |
|---|
| 286 | | self.points[:,0] = x_vals |
|---|
| 287 | | self.points[:,1] = numpy.concatenate ((dB[L/2:], dB[0:L/2])) |
|---|
| 288 | | |
|---|
| 289 | | |
|---|
| 290 | | lines = plot.PolyLine (self.points, colour='BLUE') |
|---|
| 291 | | |
|---|
| | 288 | * (self.fftsink.sample_rate * self._scale_factor / L)) |
|---|
| | 289 | + self.fftsink.baseband_freq * self._scale_factor) |
|---|
| | 290 | self._points = numpy.zeros((len(x_vals), 2), numpy.float64) |
|---|
| | 291 | self._points[:,0] = x_vals |
|---|
| | 292 | self._points[:,1] = numpy.concatenate ((dB[L/2:], dB[0:L/2])) |
|---|
| | 293 | |
|---|
| | 294 | lines = plot.PolyLine (self._points, colour='BLUE') |
|---|
| 367 | | index = numpy.argmin(numpy.abs(x_vals-ux)) |
|---|
| 368 | | x_val = x_vals[index] |
|---|
| 369 | | db_val = self.points[index, 1] |
|---|
| 370 | | text = (self.format+" %s dB=%3.3f") % (x_val, self.units, db_val) |
|---|
| | 370 | ind = numpy.argmin(numpy.abs(x_vals-ux)) |
|---|
| | 371 | x_val = x_vals[ind] |
|---|
| | 372 | db_val = self._points[ind, 1] |
|---|
| | 373 | text = (self._format+" %s dB=%3.3f") % (x_val, self._units, db_val) |
|---|