[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Discuss-gnuradio] Correlate and sync matched filter: pitfall and anothe
From: |
Andy Walls |
Subject: |
[Discuss-gnuradio] Correlate and sync matched filter: pitfall and another bug (Re: Question on threshold mathematics in correlate_and_sync block) |
Date: |
Mon, 05 Jan 2015 08:00:49 -0500 |
On Fri, 2015-01-02 at 09:56 -0800, Nick Foster wrote:
> I'm in the middle of generalizing correlate_and_sync_cc to allow use
> with any candidate vector you want (although I hadn't considered the
> real-only case).
> --n
Hi Nick,
Since you're reworking the correlate and sync block, I thought you might
want to address some additional things I've found regarding the matched
filter generation. I've noticed 1 end-user pitfall that you may want to
document and 1 bug in how the matched filter is generated.
1. Pitfall: The pulse filter tap specification requirments are not
obvious. In my experimentation over the weekend, the pulse filter taps
have to be generated assuming a rate of:
nfilts samples/symbol, or equivalently
(nfilts * symbol_rate) samples/second
where
nfilts is the number of filters in the polyphase resampler
symbol_rate is the symbol rate in symbols/second
regardless of the user's "sps" (samples/symbol) value.
This is certainly the case for the real rectangular pulse with no ISI
and real half-sinusoid pulse with no ISI, with which I was playing.
So, if nfilts = 32, these are my proper pulse filter taps specifications
in python:
rectangular: [1.0]*nfilts
half-sinusoid: [math.sin(math.pi*float(i)/float(nfilts)) for i in
range(nfilts)]
even though my sps = 13.3333.
This was very non-intuitive and should be documented for the end-user.
2. Bug: The generated matched filter appears to be short a symbol.
Using my real variant of correlate_and_sync, I specified the following:
symbols: [1,0]*10 + [1,0,1,1,1,1] (block converts these to
NRZ)
pulse filter taps: [math.sin(math.pi*float(i)/float(32)) for i in
range(32)]
samples/symbol: 13.3333333333
nfilts: 32
and the block generates the matched filter in the attached PNG. The
missing final symbol from the start of the filter is obvious. Since my
block is a very closely cut-and-paste clone of
correlate_and_sync_impl.cc and msk_correlate_impl.cc, the bug probably
exists in them as well.
Regards,
Andy
Matched filter missing symbol.png
Description: PNG image
- Re: [Discuss-gnuradio] Question on threshold mathematics in correlate_and_sync block, Andy Walls, 2015/01/02
- Re: [Discuss-gnuradio] Question on threshold mathematics in correlate_and_sync block, Tom Rondeau, 2015/01/02
- Re: [Discuss-gnuradio] Question on threshold mathematics in correlate_and_sync block, Andy Walls, 2015/01/02
- Re: [Discuss-gnuradio] Question on threshold mathematics in correlate_and_sync block, Nick Foster, 2015/01/02
- Re: [Discuss-gnuradio] Question on threshold mathematics in correlate_and_sync block, Andy Walls, 2015/01/02
- Re: [Discuss-gnuradio] Question on threshold mathematics in correlate_and_sync block, Andy Walls, 2015/01/03
- [Discuss-gnuradio] Correlate and sync matched filter: pitfall and another bug (Re: Question on threshold mathematics in correlate_and_sync block),
Andy Walls <=
- Re: [Discuss-gnuradio] Correlate and sync matched filter: pitfall and another bug (Re: Question on threshold mathematics in correlate_and_sync block), Tom Rondeau, 2015/01/05
- Re: [Discuss-gnuradio] Correlate and sync matched filter: pitfall and another bug (Re: Question on threshold mathematics in correlate_and_sync block), Nick Foster, 2015/01/05
- Re: [Discuss-gnuradio] Correlate and sync matched filter: pitfall and another bug (Re: Question on threshold mathematics in correlate_and_sync block), Andy Walls, 2015/01/06