# Setting up RRC filter and useful equations

I have looked at previous answers but cant seem to get everything I need in one place to help me and my textbook doesnt explain this in practical terms.

Signal Parameters:

• $$F_s = 44100$$
• $$R_s = 300$$
• $$sps = F_s / R_s$$

Now my Raised Cosine filter parameters I am struggling...

$$\text{Raised Cosine} = \operatorname{sinc}(t/T_s) \cos(\pi \beta t/T_s) / (1-( \beta t / T_s)^2) \quad\text{using}\quad \beta = 0.2$$

I think I need the RRC filter in time domain to cross every symbol period of the signal so $$T_s$$ for RRC filter is

$$T_s = sps \cdot (1 / {F_s})$$

I also need to setup t, the time vector for the RRC filter (which is unrelated to time vector of the signal). I undertand I first need to get the number of taps to do that

• $$\text{upsampling} = 1$$
• $$taps = sps \cdot upsampling +1$$

I am weary that this could be very high because of $$sps$$ of the signal.

t = (-taps / 2 : 1 : taps/2)  #time vector

This goes horribly wrong and not a sinc function in time domain or the frequency response I would have thought either.

Please can you help? Is there also any equations that could also help define the passband ripple, stopband attenuation and transition width?

First of all, the correct equation for an RRC pulse is given here.

You are correct that you need to define the sampling frequency Fs and the symbol interval Ts. The number of samples per symbol interval is then Ts*Fs, which I assume to be an integer.

You also need to define beta, and the pulse duration D. For simplicity, let's assume D is given as a multiple of the symbol interval Ts.

Then, you can easily define the time vector. Assuming symmetry around zero:

t = (-D/2)*Ts:1/Fs:(D/2)*Ts;

Then, if you have a function rrc(t) that evaluates the RRC formula for a given time vector t, you're done (all you need to do is transcribe the formula I gave above into Matlab) or whatever language you use).

Note that you don't need to worry about upsampling. The symbols that go into the RRC filter have to be upsampled to space them out by Ts, but the filter itself doesn't have to be.

For more details, see Chapter 11 in the book linked at the bottom of the page here. That book is actually quite practical and may be a good complement to your current textbook.

• That's great, good book too. One thing, the number of taps, you call D. Is there any equation relation here for relating stopband attenuation, inband ripple, cut off and number of taps? Feb 7 at 9:16
• I was thinking more on what you said. "Symbols that go into the RRC filter have to be upsampled to space them out by Ts", where Ts here is symbol interval, but why? The signal coming in is sampled at Fs, the same Fs for the filter. So they are both spaced out by Tsamples, why does it need to be Tsymbols. Tsamples might be smaller than Tsymbol Feb 7 at 11:40
• One more thing on my first comment. Some people are saying that D = sps * upsampling_factor + 1. How is that fitting with what you say? Feb 7 at 14:09
• Natalie: D is the pulse duration in seconds, not the number of taps. The number of taps is D*fs. The information symbols need to be spaced Ts seconds; since the input signal is sampled at fs, you need to insert zeros, that is, "upsample" the symbols by fs*Ts. Finally, I don't know what some people say or why; it may be, for instance, that they want the number of taps to be even, or to be odd, or something else.
– MBaz
Feb 7 at 16:03
• Thinking more on what you said... Fs, does this have to match the signal Fs or is the Fs of the filter unrelated? If you mean D is the filter duration in seconds, then why would you start from that point and not the number of taps? I can follow from what you say and show that num_taps = D * Fs = span * Fs/Rs = span*sps . Where span = number of symbols the filter will span in time. In my mind, the only parameters that can now be varied to effect number of taps is span and Fs since Rs is fixed. Feb 8 at 11:39