[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] gr-radio-astronomy/src/python usrp_psr_receiver.py
From: |
Marcus D. Leech |
Subject: |
[Commit-gnuradio] gr-radio-astronomy/src/python usrp_psr_receiver.py |
Date: |
Fri, 30 Jun 2006 17:05:31 +0000 |
CVSROOT: /sources/gnuradio
Module name: gr-radio-astronomy
Changes by: Marcus D. Leech <mleech> 06/06/30 17:05:31
Modified files:
src/python : usrp_psr_receiver.py
Log message:
Changed the way ntaps is computed for de-dispersion filtering.
Untested!
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gr-radio-astronomy/src/python/usrp_psr_receiver.py?cvsroot=gnuradio&r1=1.3&r2=1.4
Patches:
Index: usrp_psr_receiver.py
===================================================================
RCS file: /sources/gnuradio/gr-radio-astronomy/src/python/usrp_psr_receiver.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- usrp_psr_receiver.py 29 Jun 2006 20:06:29 -0000 1.3
+++ usrp_psr_receiver.py 30 Jun 2006 17:05:31 -0000 1.4
@@ -312,9 +312,9 @@
# Do this here, just before creating the filter
# that will use the taps.
#
- ntaps = 2047
+ ntaps = self.compute_disp_ntaps(self.dm,self.bw,self.observing_freq)
- # Taps for the real de-dispersion filter
+ # Taps for the de-dispersion filter
self.disp_taps = Numeric.zeros(ntaps,Numeric.Complex64)
# Compute the de-dispersion filter now
@@ -326,18 +326,8 @@
#
#
- # The dispersion filter--computes the inverse of the transfer
- # function of the interstellar media. Theoretically.
- # HARD TO TEST AT THE MOMENT!
- #
- #
- self.bogus_taps=Numeric.zeros(1024,Numeric.Complex64)
-
- # Now create the FFT filter using the bogus taps
- self.dispfilt = gr.fft_filter_ccc(1, self.bogus_taps)
-
- # ...and set our "real" filter taps
- self.dispfilt.set_taps(self.disp_taps)
+ # Now create the FFT filter using the computed taps
+ self.dispfilt = gr.fft_filter_ccc(1, self.disp_taps)
#
# Audio sink
@@ -659,6 +649,8 @@
# Now that we're adjusted, compute a new dispfilter, and
# set the taps for the FFT filter.
+ ntaps = self.compute_disp_ntaps(self.dm, self.bw,
self.observing_freq)
+ self.disp_taps = Numeric.zeros(ntaps, Numeric.Complex64)
self.compute_dispfilter(self.dm,self.doppler,self.bw,
self.observing_freq)
self.dispfilt.set_taps(self.disp_taps)
@@ -995,6 +987,8 @@
def set_dm(self,dm):
self.dm = dm
+ ntaps = self.compute_disp_ntaps (self.dm, self.bw, self.observing_freq)
+ self.disp_taps = Numeric.zeros(ntaps, Numeric.Complex64)
self.compute_dispfilter(self.dm,self.doppler,self.bw,self.observing_freq)
self.dispfilt.set_taps(self.disp_taps)
self.myform['DM'].set_value(dm)
@@ -1009,6 +1003,8 @@
def set_doppler(self,doppler):
self.doppler = doppler
+ ntaps = self.compute_disp_ntaps (self.dm, self.bw, self.observing_freq)
+ self.disp_taps = Numeric.zeros(ntaps, Numeric.Complex64)
self.compute_dispfilter(self.dm,self.doppler,self.bw,self.observing_freq)
self.dispfilt.set_taps(self.disp_taps)
self.myform['Doppler'].set_value(doppler)
@@ -1075,7 +1071,6 @@
#
# Compute minimum number of taps required in de-dispersion FFT filter
- # We always return a power of 2, to keep the FFT efficient
#
def compute_disp_ntaps(self,dm,bw,freq):
#
@@ -1090,25 +1085,15 @@
# Compute smear time
Dt = dm/2.41e-4 * (1.0/(f_lower*f_lower)-1.0/(f_upper*f_upper))
- # Taps is now bandwidth*smeartime*2
- ntaps = bw*Dt*2
- x = 1
- # Compute log2(ntaps)
- for i in range(0,22):
- if x > ntaps:
- logn = i
- break
- x *= 2
-
- # FFT length made a power of 2 for efficiency
- x = 2**(logn)
- if (x < 256):
- x = 256
-
- return(int(x))
+ # ntaps is now bandwidth*smeartime
+ # Should be bandwidth*smeartime*2, but the Gnu Radio FFT filter
+ # already expands it by a factor of 2
+ ntaps = bw*Dt
+ print "Dedisp requires ", ntaps, "taps"
+ return(int(ntaps))
def main ():
- app = stdgui.stdapp(app_flow_graph, "RADIO ASTRONOMY PULSAR RECEIVER:
$Revision: 1.3 $", nstatus=1)
+ app = stdgui.stdapp(app_flow_graph, "RADIO ASTRONOMY PULSAR RECEIVER:
$Revision: 1.4 $", nstatus=1)
app.MainLoop()
if __name__ == '__main__':