Low-pass filter

If I want to use a low-pass filter to look at 1MHz blocks of data, is it
appropriate to use the following parameters:

low pass filter: 500khz
center frequency: -500khz (for 1MHz, increments of 1MHz for others)
Taps: firdes.low_pass(1, samp_rate, 500000, 100)

Paul B. Huter

On Mon, Nov 18, 2013 at 10:35 AM, Paul B. Huter [email protected]
wrote:

If I want to use a low-pass filter to look at 1MHz blocks of data, is it
appropriate to use the following parameters:

low pass filter: 500khz
center frequency: -500khz (for 1MHz, increments of 1MHz for others)
Taps: firdes.low_pass(1, samp_rate, 500000, 100)

Paul B. Huter

For a low pass filter, you specify the passband bandwidth, but it’s a
real-valued filter, so it’s symmetric about 0. So, yes, if you set the
bandwidth of the filter to 500 kHz, then the filter will filter from
-500 to +500 kHz.

If you just want to look at 1 MHz of spectrum, I suggest you also
decimate the incoming signal so that you reduce your processing
requirements as well as filter.

Tom

Thanks, Tom. I do intend to decimate the 50MHz input by 50 to have 1MHz.
Is
that correct?

Also, if I take my 50MHz source USRP, and run it through the filter with
decimation and low pass filter set to 15000000 (15MHz)
center frequency @ 15000000 (again, 15MHz)
Taps = firdes.low_pass(1, samp_rate, 15000000, 100)

Will that give me a 30MHz signal to save to a data file and run back
through the filter I initially asked about?

Thanks.

Paul B. Huter

On Mon, Nov 18, 2013 at 10:56 AM, Paul B. Huter [email protected]
wrote:

Thanks, Tom. I do intend to decimate the 50MHz input by 50 to have 1MHz. Is
that correct?

Yes, decimating by a factor of 50 will give you 1 Msps. Remember to
define your filter for a sampling rate of 50 Msps and a bandwidth of
500 kHz to achieve what you want.

Paul B. Huter
I should have asked this with your other question. What do you mean by
center frequency? Don’t confuse that with samp_rate. The center
frequency is where you’ve tuned your receiver to. GNU Radio deals with
complex baseband, so the frequency you’ve tuned your front-end (e.g.,
USRP) to is viewed by GNU Radio as 0 Hz.

The samp_rate in your example above should be set to the sampling rate
of the receiver: that is, 50 Msps. The bandwidth of your filter is
determined based off this.

Remember that you are /just/ filtering your signal but not affecting
the sampling rate at all. So if you set up your filter like this:

taps = firdes.low_pass(1, 50e6, 15e6, 500e3)

And your filter block as:

lpf = filter.fft_filter_ccc(1, taps)

Then you are not changing the sampling rate at all. You will remove
anything between 30 - 50 MHz but your sampling rate is still 50 MHz.

Also, I see you have a sampling rate of 50 Msps but a transition width
of 100 Hz. That’s going to be one gigantic filter! You don’t need that
tight of a transition band.

Run gr_filter_design. You can set up the parameters there and look at
the shape of the filter. It will also tell you the size of your
filter.

Tom

Thank you for your help.

Paul B. Huter

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs