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

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) for and

(b) for

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

The updated posts are:

1. Raised cosine filter for transmit pulse shaping

2. Eye diagram with raised cosine filtering

Thanks again Mr. Phan Minh Hoang. 🙂

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

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

  1. 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!!

  2. 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?

  3. @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?

  4. 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++?

Leave a Reply

Your email address will not be published. Required fields are marked *