[Top][All Lists]

## [Discuss-gnuradio] rational_resampler vs pfb_arb_resampler filter design

 From: Lev Serebryakov Subject: [Discuss-gnuradio] rational_resampler vs pfb_arb_resampler filter design -- why such strange cut frequencies in both cases? Date: Thu, 23 Oct 2014 01:39:15 +0400 User-agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.1.2

```-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

I'm looking at filter design procedures for rational_resampler and
pfb_arb_ resampler and see contradiction between them.

Lets assume downsample with rate 3/4 or 0.75. Lets source sample rate
to be 10000 (so, target sample rate should be 7500), but, in fact, it
is irrelevant.

rational_resampler could be configured for this task with
interpolation=3 and decimation=4. We'll set fractional_bw to "0.4" to
match arb_resampler "80%" multiplier. design_filter() method in
rational_resample.py will create low-pass filter with:

gain = 3
FS = 1
transition center = 0.4/3 = 0,1(3) of 30000 = 4000 (!!!)
transition width = 0.1

It doesn't look resonable, as 4000 is more than 3750 which is Nyquist
frequency for targer sampling rate.

Lets look at arbitrary resampler (pfb.py):

rate is < 1. so it takes first branch:

gain = 32 (default number of filters)
FS = 32 (WHY?!)
transition center = 0.5 * 0.75 * 0.8 = 0.3 (And it should be in Hz!)
transition width =  0.15

As you can see, parameters are rather different. But in this case
filter should be roughly the same, because task is the same! We need
to filter out all frequencies below 3750!

And both methods raise the questions. I could not say, that one of
the methods looks good to me. Questions are:

(1) Why rational resampler doesn't take decimation in account when
calculates bandwidth? It design filter which will correctly reject all
images in upsample, but looks like aliasing is possibly when effective
ratio is less than 1, as only interpolation is used in bandwidth
calculation and resulting filter "effectively" works at upsampled rate.

(2) Why arbitrary resampler set Fs to number of filters and AFTER
that pass bandwidth numbers as normalized to 1, not to this Fs?! 0.3
is perfectly good (may be slighly conservative, but Ok) transition
band center, but in this case this 0.3 will be taken for FS=1, and
here FS=32 (number of filters) is used, so it will be 32 times too low
(!).

Are these two peculiarities two bugs, really, or I don't understand
something?

Yes, I've read harris' book on multirating processing, and AFTER this
book I got these questions.

- --
Black Lion AKA Lev Serebryakov
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQJ8BAEBCgBmBQJUSCQDXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRGOTZEMUNBMEI1RjQzMThCNjc0QjMzMEFF
QUIwM0M1OEJGREM0NzhGAAoJEOqwPFi/3EePRzAP/1BERw1W6GM+kLwYDEulshRu
fzUcoa7+MWuK/Bn5lVmLl0DnoAUT+4jOpQaQhh581P3KTXMBGffooLoLPAfo6TRj
HAL7lL7QSqfbSRMfnRFTZTtjmPOatK7Z310j9TKirv7QG6Ko9KLk/po9TdgOUQgP
/ddOi1mRxCvGdVE8e0M5rDvGwd+ToTqfgf7jo7RQcDdmftzsfjmGPVrSyPLED/v1
86cVFWeHjOJ/HmZ797dGc6Bv3nX89J0TTneIL0m4J65qskqukquCYvD17OIB+kL3
wXfOBumpssVbAA1wjoPyDXOlXKO9GIhcMm6XosXpw+wJnHSx1ykx3Ycd3uew8/Cm
9fYIdqRmYoxh1hlHvpvri1iJslMQqz7bHWYw0aEPYCE6KY8tV004Nen2prH5Wdyy
3mkn7g/kQfnGHL9EPhYdyGUJBG4MnGPsCW6FF2SPRZkReK+cgVDA8WBt5YExQayP
nFr3F9atnuD8LxJ697zIeNJAbK4CBofaiEw4wZ2ooWqG52MIdq1ArqIqEC3P2dK1
xqjt/IPbZaiXTykjAqH8zWcPX1BsJnGLdvhhofLGdkLRQD/x+3nmEiDIH9PFTCfW
D6U1vL56df3r+FRgMczz
=4Rwb
-----END PGP SIGNATURE-----

```