Eye diagram with raised cosine filtering

We have discussed about probable transmit pulse shaping filter and have observed that raised cosine filtering filtering allows a simpler implementation, albeit at the cost of increased bandwidth. Let us know understand the eye diagram, which is a useful graphical tool to quantify the degradation of the signal due to filtering.

Eye diagram

An eye diagram is generated in an oscilloscope operating in the persistence mode by observing the output of the filter with the symbol timing serving as the trigger. The observation window can be set as 2 times the symbol period. (Refer. Section 5.1.3 in [DIG-COMM-BARRY-LEE-MESSERSCHMITT]).

When the input data is random, the eye diagram which consists of many overlapped traces of the signal captures visually all the paths which the waveform takes.

Simulation script

Matlab/Octave script for simulating the eye diagram plot. The code performs the following

(a) Defines random BPSK modulated symbols (+1’s and -1’s)

(b) Defines two raised cosine filters with = 0.5, = 1

(c) Upsamples the transmit sequence by zero insertion

(d) Convolves the upsampled transmit sequence with the filter

(e) Overlays the time domain samples to plot the eye diagram

Click here to download: Matlab/Octave script for ploting the eye diagram


25th May 2008

Corrected the issue. Modified the code to handle division by zero.

(a) for and

(b) for

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

19th May 2008

It has been brought to my attention that the code is unable to plot the eye diagram accurately in Matlab environment. The difference is because my version of Octave seems to handle the division by numbers close to zero cleanly, where as Matlab insists on returning Inf. I will fix the code and release an update. sorry for the inconvenience.

Eye diagram following raised cosine filtering with alpha=0.5

Figure: Eye diagram following raised cosine filtering with = 0.5

Eye diagram following raised cosine filtering with alpha =1

Figure: Eye diagram following raised cosine filtering with = 1

As can be observed from the above figures, the above waveform has a shape similar to the human eye and hence the name eye diagram. 🙂


1. For increasing the margin for error free transmission, the vertical opening of the eye should be more. In the presence of inter-symbol interference, the vertical opening of the eye reduces, thus increasing the probability of error.

2. The ideal sampling instant is the point where the vertical eye opening is maximum.

3. Smaller horizontal eye opening means implies more sensitivity to timing errors.


From the above figures, it can be observed that the horizontal eye opening with =0.5 is smaller than with =1.

Reason: The tails of the raised cosine filter with =1 dies away faster than the case where =0.5. Hence error in timing cause a bigger performance degradation for =0.5 than for=1 scenario. However, the flip side of using =1 is the increased bandwidth required for transmission.


[DIG-COMM-BARRY-LEE-MESSERSCHMITT] Digital Communication: Third Edition, by John R. Barry, Edward A. Lee, David G. Messerschmitt

Hope this helps.

20 thoughts on “Eye diagram with raised cosine filtering

  1. Hello Krishna, how do i plot the eye diagram for OFDM system? upsample->IFFT->adding timing offset->downsample->FFT->plot the eye diagram. Is it correct?

    1. @linkin8834: Hmm… well, eye diagram is plotted on the time domain waveform getting overlayed every symbol period. For OFDM waveform with a Gaussian like distribution for the time domain, do not expect the eye diagram to carry useful information.

  2. I am doing ofdm simulation and trying to use a eye diagram to compare the single carrier and subcarrier in multipath.
    However, I don’t know how to delay the output.
    For example, overall output = r(t)+0.5r(t-5us)+0.2r(t-10us) where r(t) is the signal after convolution.

  3. What is the effect of sampling time offset in the error vector magnitude? Does the sampling time offset react to changes in roll off factor?

    1. @Theeksha: The presence of sampling time offset increases the error vector magnitude. Ideally we would like to sample at the maximum vertical eye opening, but in the presence of sampling time offset, we will drift away from the maximum eye opening window.

  4. Hi Krishna,
    I have a question regarding the plot of eye diagram that you’ve shown.
    You said its plotted for two symbols and the eye opening seems to be at
    the center of the diagram(at completion of first unit interval). So is plotted
    like half of previous bit,current bit and half of future ?

  5. Hi Mr krishna ,
    I don’t understand the utility of “upsampling the transmit sequence ”
    what will happen if we did not add the zeros to the sequence ?
    I wonder if there is some links clarifying this idea .
    thank you very much.

    1. @Fahmi: With a sampling frequency of fs, we can ‘see’ frequencies from [-fs/2 to fs/2). Typically, we would want to control a bigger bandwidth compared to the original transmit sequence. Hence we do upsampling.

  6. krishna can u help me…why the graph of BER vs SNR in BPSK in theoretical and simulation is same..Whats the reason about it..

  7. @Prashant: All the data which we need to obtain can be observed by plotting for two symbol periods – width of the eye opening, transition edges etc. Ofcourse, nothing stops us from plotting for 3 (or more) symbol periods….

    Glad that you are finding this site useful. Typically books do not cover these small details. To return the favour, you can refer this site to your friends/colleagues. Thanks.

  8. You have plotted it for two symbol period. Is that a rule or it varies i mean eye-diagram by definition assumes two symbol period? Actually I could not find any material which deals with implementation of eye-diagram except yours and in the books they don’t mention these details.

  9. Hi,
    Thanks for the nice article. I tried your matlab code, but I have some confusion. Can you elaborate your x axis in the code i.e. time axis? I mean, what is symbol rate and bit rate, why have you plotted this for 20 time instants, (i guess 20 = 2*fs in the code)?


Leave a Reply

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