Articles

# Update: Correction in Matlab code for raised cosine filter

Thanks to the keen observation by Mr. Phan Minh Hoang, I was notified that the Matlab/Octave scripts provided along with the topic raised cosine filtering was not behaving properly.

Reason: I was not taking care of the division by zero when creating the raised cosine filter taps. 🙁

The equation for raised cosine filter is

$g(t) = \left(\frac{sin(\pi t/T)}{\pi t/T}\right)\left(\frac{cos(\alpha \pi t/T)}{1-(2\alpha t/T)^2}\right),\mbox{ } t=-\infty \mbox{ to } +\infty$

where
$\alpha$is the excess bandwidth parameter and takes values from 0 to 1.

I was not taking care of the division by zero in the above equation. I updated the code to explictly handle the division by zero case where:

(a) $\frac{sin(\pi x)}{\pi x} =1$ for $x=0$ and

(b) $\frac{cos(\alpha \pi t/T)}{1-(2\alpha t/T)^2}=\frac{\pi}{4}$ for $|\frac{\alpha t}{T}| = \frac{1}{2}$

(Thanks to the article in RFDesign.com, The care and feeding of digital, pulse-shaping filter, Ken Gentile)

The updated posts are:

Thanks again Mr. Phan Minh Hoang. 🙂

All,
In case you find errors and inconsistencies in the article and/or simulation models, kindly let me know.
Regards,
Krishna

## 9 thoughts on “Update: Correction in Matlab code for raised cosine filter”

1. ABHIJEET says:

hi, i need matlab code for ofdm transmission using pulse shaping filter like raised cosine filter
thanks

2. rasi says:

in matlab using the inbuilt functions i generated random signal and modulated using QPSK and then transmitted adding awgn. After receiving and demodulating i m geeting zero bit error rate. Is it because of i have to use some other equations for QPSK and how can we change the frequency values and BW for the modulation. Please help me!!

3. dima says:

cum sa scriu cosinus la patrat de un oarecare X, in softul MATLAB

4. jhony says:

can you guide me to a site or some sources from where i can get help for the code written in c++ for digital communication?

5. Krishna Pillai says:

@Jhony:
Ofcourse, we can do the simulations in C++ (or any most other programming languages). The advantage with Matlab is that it is easier to code and debug compared to C.

In Matlab, Y = A*B where A and B are matrices is a one-liner.
Imagine how many lines of code we need to write for the same operation in C?

6. Jhony says:

hi
i hope u r doing fine… why dont we do the simulations in c++??? i mean is it possible to simulate QPSK in c++?