Hi All,

I am not familiar with Python. I got confused on the output of FFT

block. I

can record the raw data coming to the USRP. However, I also need the

data

coming outof FFT block. For example, when usrp_fft.py is running, it

calls

fftsink2.py and give the spectrum plot. I found that in class fft_window

in

fftsink2.py file, def set_data() gives the data after FFT block, which

is

points[:,1]. Am I right? How can I show the maximum value of points[:,1]

in

status bar of FFT_GUI window?

If I change the def set_data() which I attached below, I can print that

max

value in the terminal, but I can not update the frequency from GUI

window.

Can I do both things, updating freq and updating the max(points[:,1])

value

in GUI status bar not the terminal?

I also tried adding a vector sink in class fft_sink_c,

self.connect(self, self.s2p, self.one_in_n, self.fft, self.c2mag,

self.avg,

self.log, self.sink)

```
self.win = fft_window(self, parent, size=size)
self.set_average(self.average)
```

self.dst2 = gr.vector_sink_f ()

self.connect(self.log, self.dst2)

However, it doesn’t work.

I was stcuk here for a long time. If anyone can help me with this

question,

I really appreciate!

Brook

##############

def set_data (self, evt):

dB = evt.data

L = len (dB)

```
if self.peak_hold:
if self.peak_vals is None:
self.peak_vals = dB
else:
self.peak_vals = numpy.maximum(dB, self.peak_vals)
dB = self.peak_vals
x = max(abs(self.fftsink.sample_rate),
```

abs(self.fftsink.baseband_freq))

#if x >= 1e9:

# sf = 1e-9

# units = “GHz”

if x >= 1e6: #elif

sf = 1e-6

units = “MHz”

else:

sf = 1e-3

units = “kHz”

```
if self.fftsink.input_is_real: # only plot 1/2 the points
x_vals = ((numpy.arange (L/2)
* (self.fftsink.sample_rate * sf / L))
+ self.fftsink.baseband_freq * sf)
points = numpy.zeros((len(x_vals), 2), numpy.float64)
points[:,0] = x_vals
points[:,1] = dB[0:L/2]
else:
# the "negative freqs" are in the second half of the array
x_vals = ((numpy.arange (-L/2, L/2)
* (self.fftsink.sample_rate * sf / L))
+ self.fftsink.baseband_freq * sf)
points = numpy.zeros((len(x_vals), 2), numpy.float64)
points[:,0] = x_vals
points[:,1] = numpy.concatenate ((dB[L/2:], dB[0:L/2]))
lines = plot.PolyLine (points, colour='BLUE')
graphics = plot.PlotGraphics ([lines],
title=self.fftsink.title,
xLabel = units, yLabel = "dB")
self.Draw (graphics, xAxis=None, yAxis=self.y_range)
self.update_y_range ()
```

allpoints=[]

allpoints=points[:,1]

#print ‘x_vals’,x_vals, len(x_vals)

print ‘points’,allpoints, len(allpoints)

print ‘max_point’,max(allpoints)

##
mag_max=0

for idx in range(len(allpoints)):

if allpoints[idx]>mag_max:

mag_max = allpoints[idx]

idx_mag_max = idx

print 'mag_max is ', mag_max

print 'ndx_mag_max is ', idx_mag_max

deltafreq = (2e6)*(256*(512**(-1)))

if mag_max>10:

print ‘There is a signal @ delta’,deltafreq/1e6, ‘MHz’

###########################

View this message in context:

http://www.nabble.com/Question-on-output-of-FFT-block-tp15951020p15951020.html

Sent from the GnuRadio mailing list archive at Nabble.com.