Charan L.

545 comments on “Charan L.
  1. Rajiv says:

    Hmm. Interesting heading. Machine translation into Devnagri. From English, the most confused language in the world. Hmm.

    No wonder. Makes no sense whatsoever, I was completely confused. Doesn’t even come close to what I think you are trying to say – which I figured from the first sentence of your post. Here is the corrected title:
    ग्रैजुएशन स्पीच एट कैल पोली, सेन लुई ओब्सिपो एयरोस्पेस एन्जिनेअरिंग ग्रैजुएशन बैंक्वेट
    Now if you are wondering how you could have got it right using Google Transliterate, here is the true phonetic English to use. So you see, there is a long way to go.

    graijueshan speech aet kael poli, sen luee aeyarospaece enjinearing bankwaet

  2. dalbert02 says:

    First, thank you so much for your website. I am not a very smart person, but with your help, I am starting to understand some difficult (to me at least) topics. What I do not understand is how you lose your emails when you change computers! Just export your mail to a file on a jump drive and import them on the new computer. I have emails from 1994! I can’t begin to tell you how many computers I’ve had since then!

  3. ISS says:

    Hi Charan,

    I’m a big fan of your site (and open-source learning in general) and the way you explain concepts in communications in an intuitive manner. I’m greatly looking forward to how you explain MIMO. It seems like there is A LOT of new developments concerning MIMO-OFDM and the diversity-multiplexing tradeoff.

    All the best,

  4. Shriram says:

    Hi Charan,

    Your website “” has helped me a lot in getting an intuitive understanding of the otherwise complex Signal Processing and Communication theory. I am expecting more concepts from the-most-difficult Information Theory to be explained! Hats off for your work!!

    Thanks a ton,
    Shriram Nandakumar

  5. SEwind says:

    Hi Charan,
    I came to your website via google by accident. The tutorials are verg helpful for me. At the beginning, I read the chapters about turbo coding. I tried lots of documents, but most of them are too complicated for me. After reading your tutorials, I understand turbo coding now. Then I looked through all the tutorials on communications. You really did a great job.

    Thank you.

    Changan Zhu

  6. Pilot-Pooja says:

    Please accept my sincere thanks for providing a useful website at zero cost:

    As my communications concepts are not strong, i will use the info to prepare for my forthcoming scientist interview in ISRO.

    I also thank you for accepting my linkedin request.

    Best Regards
    Pooja Gupta

  7. Hi there,
    I found your MIMO part to be very useful but couldn’t find your recent post on MIMO (part 2). Will you help me on that?

  8. Charan says:

    Actually I combined both Part I and Part II in one, which is now on the site. Is there a particular part of MIMO you are interested in

  9. karu says:

    I find your tutorials very useful, especially intro to OFDM and MIMO is very nicely presented with minimum math . Thank you very much for these tutorials

  10. jon-h says:

    dalbert02 is right about not losing emails. however export/import is not the recommended approach. google the topic or see: for example.

  11. William Quillen says:

    A colleague has shared your material about CDMA with me and I found it very beneficial. I look forward to exploring some other tutorials at your site. Thank you for your contributions. “All my Filters” … cute title!

  12. Dan Sandberg says:

    Thanks for the very readable tutorial.

    Small error I noticed: Figure 1.7 (“a 3-level signal”) has four levels.


  13. Nina Levin says:

    Great website!

  14. Duy Nguyen says:

    Thank you for making the tutorial available to public. The PDF file for tutorial 11 – Link Budgets is actually of tutorial 12.

  15. Jamal A. says:

    Dear Charan,

    First thank you very much for this tutorial.

    In the OFDM tutorial, page 5 I have this question:

    1- How this been found:
    bits from the information: 1,1,-1,-1,1,1,1,-1,….

    2- How this been calculated:
    harmonics 7/4, 7/2, 21/2 Hz?

    Thank you.

  16. nikhil says:

    great website

  17. Randy Pilkington says:

    I believe figure 6c and 6d should have input=0 in the caption rather than input=1. Also in 6d, the input state should be 001. Unless I miss something!

    By the way, I really appreciate your tutorials. Very well written and intuitive! Many thanks.

  18. Jean-Benoit Larouche says:

    Hi! First of all, thanks a lot for all these tutorials, I am finishing my master degree in digital telecommunication and the tutorials helped me alot in different subjects! keep on the good work!

    At this moment, I am working on TCM and I read many times your tutorial on it. My goal is to prove that using TCM, with a 2/3 rate convolutional coder and a QAM-16 constellation mapping, I can acheive the same or better coding gain then a standard 8-PSK modulation scheme. My problem is to actually find a good 2/3 convolutional encoder with a good minimum squared distance. I tried the one in the tutorial, but with the suggested QAM-16 constellation mapping, the shortest path, is definitly too short to get a significant coding gain. Do you have any suggestion regarding a good convolutional encoder for QAM-16 TCM?

    I hope I was clear,

    Thanks a lot,


  19. tintu says:

    The explanations are ultimate… Too good…. Thanks a lot for the nice work… It helps me a lot…

  20. Alejandra Mercado says:

    You have some really nice and intuitive tutorials. Thanks for posting!

  21. Spyros Villios says:

    Thank you!!!

  22. Ivar KJELBERG says:

    For private training

  23. idmond says:

    Hi, I really want to thank you for the effort you put in these amazing tutorials and I hope you keeping posting more and more of these tutorials. I just have one question about AM modulation:

    “In AM synchronous demodulation, Why we don’t divide m(t)coswt by cos(wt)
    instead of multiplying by cos(wt)?”

    When I was taking a class in Analog Communication… I recall that I was watching one of the video lectures on signals and systems from Berkeley University, the Professor was talking (in that video recording of the lecture) about amplitude modulation and why when we want to demodulate an AM modulated signal , in synchronous detection, we multiply the AM modulated signal = m(t)cos(wt) by cos(wt), where w is the carrier frequency, and why we don’t just divide by cos(wt) to get m(t) back, since this can be easily implemented by a simple divider circuit.

    well, he didn’t answer that question in the lecture, may be he just left it as an assignment for his students, I don’t know. but it just got me thinking about it, if it’s all about thinking mathematically, then it seems like it’s more intuitive and a whole lot easier if we just divide by coswt, why we go through all the trouble and multiply then we have to know the trig identity of (cos(a)cos(b)) and then put a BPF centered at w after the output…

    • Victor Levin says:

      While multiplication followed by a lowpass filter is equivalent to division, it is actually very different in implementation. The main problem with division is the issue of dividing by zero every period. This would cause amplitude spikes that would saturate the circuitry around the system. These can be avoided by syncing exactly the phases of the two cosines. Now instead of dividing by zero at t=2pi/w, there is cos(wt)/cos(wt) where both go to zero at the same time. Using L’hoptials rule, you can see that when t=2p/w, the output is 1 not infinity. But even if we managed to have perfect syncing, we still would have to build a divider circuit. These are more difficult to implement than a simple transistor mixer.

      Overall its just much simpler to build and implement the mixer to lowpass than a division circuit. But mathematically they are completely identical!

      • idmond says:

        Thanks for your reply Victor. I just don’t think that the L’hoptials rule will still work in circuit implementation. it is mathematically right, yes, but in practice, if the two cosines are in sync, then they eventually have to cross the value of zero at the same time, not just keep getting close to it, so you don’t get 1 here, but amplitude spikes.

    • Qasim Mahmood Chaudhari says:

      I was also confused about it for years. Then I realized that it is actually division if you consider the modulation/demodulation operations in complex lowpass equivalent domain.

  24. Rijo John says:

    Nice to see that you have converted the file into a pdf format and given more details. But I really miss your old webpage. It was one of the most well explained and well illustrated page of the exponential function in the whole of the internet and I used to visit it frequently when I had any technical doubts. Sorry to see that it has just vanished! Is there anyway you can also archive that page along with the current pdf just because of it’s better readability and illustrations.
    Rijo John

  25. Charan L. says:

    Divider circuits were not easy to build. That was the main impetus for doing it this way.

    • idmond says:

      why it isn’t that easy to build a divider circuit? I mean are there actually divider circuits that can divide by a function(not a number like arithmetic dividers) or we’re able to implement a divider circuit that can divide by a sinusoid function like cosine, but it’s much easier to implement a multiplier circuit than a divider one.

  26. Evenso Ndlovu says:

    Thanks for this, very enlightening!!! Keep it up there!!

  27. alexguosjtu says:

    the equation in (1.11) is not correct. it should be =(Px – Ux^2) rather than = (Px-Ux).

  28. Camuano Monteiro says:

    The site is well done and the subjects are very well construted.

  29. Charan says:

    I really enjoy your tutorials, the ones that I have read have been extremely useful and a great compliment to the courses I’ve taken. Thanks. I probably wouldn’t have sent you this e-mail if it wasn’t for your Amazon comment under Richard Lyons Understanding Digital Signal Processing. I’m reading his book now, I’m glad you decided to spread your knowledge with the same writing style.

    Going through your tutorial, I think I may have found some errors in your Figures. There may be an offset in the indexes that generated the calculations. My hand calculations don’t match your Figures, and the numbers used in the examples give calculations that can valid for more than one edge, I can’t eliminate any assumptions I’ve made. I was hoping you’d provide some clarity. Thanks.

    Figure 16 – Page 13.
    Center Trellis
    Some of the 0.586 should be a 2, 3.414

    Figure 19 – Page 15
    I think some of the labels are swapped.

    Figure 21 – Page 17
    If Figure 19 labels were swapped, same applies.

    Page 28
    For the final equality of Y.
    It should be 2*x^4 [0 1 1]T instead of x^4

  30. Raghav Kapur says:

    Can you please add a link to my website to

    I run a website for the RF & Microwave Industry called everything RF –

    We provide a tool which enables engineers to find products and companies based on their requirement. We also provide a useful White Paper Library.


  31. Rehmat Ullah Kundi says:

    I greatly appreciate your efforts in putting these pages together. I have seen your previous versions and this one seems to be more refined. Facebook page has increased its utility even further. I am not directly involved in Digital comm but I do read material on the subject to keep my self updated. I also share these with my students and colleagues. Thanks one more time for efforts and time.

  32. Faiz says:

    Great work,
    Very useful collections.

  33. aman sikri says:

    i have gone through these notes. I think this is a fantastic work by you. I just want few notes on wireless basics communication. Can u add this topic also.?

    • Charan L. says:

      HI Aman,

      Not clear what you are asking? What kind of wireless notes do you need?

      Charan Langton

      • Vishwas S Patel says:

        It will be more helpful, if you can post about the wireless communication from 1G to 4G..
        Different types of modulations used in different generations.
        Like OFDMA basic concepts for WiMAX, LTE and WIFI.. Why OFDMA was started?
        CDMA basic concepts .. why it was used earlier?
        It will be a lot more helpful…

        • Charan L. says:

          Sorry, I just saw this.

          Well it looks like a good idea for a separate tutorial. Time is usually short and my list is always too long, so it may happen.
          Thank you.


  34. JB says:

    hello Charan Langton,

    I first thank you for your insightful tutorial. however in fig 27.4 about SISO and MIMO capicty Vs SNR comparison, I think there was a mistake in legends marking. for example at 10dB of SNR SISO is marked to be with high data rates than MIMO. I stand to be corrected if I am the one with wrong interpretation.

  35. Ravi Kumar says:

    The tutorial contains very useful info…thanks for sharing such good information

  36. Srikanth Konjeti says:

    I started my career in Digital comm and moved to Audio DSP.
    I came across the OFDM article that i took a print of some years ago and was lying in the desk. I didnt understand it then but read it again recently. It was so clearly written an simple to understand. It was an “Aha” moment and want to mention my thanks.
    Keep up the good work


    • Charan L. says:


      This paper on OFDM seems to be most popular of all my articles.
      Probably because the issue of the inverse FFT is so confusing.
      Glad you liked it.

      Charan Langton

  37. kate says:

    fyi – pdf link seems broken? I came to recommend these pages to a classmate. It worked yesterday 🙂

  38. Rajaram Gopalraju says:

    I could understand fourier transform very well by means of this step-by-explanation;I have also obtained an insight in to the basic principles of modulation and sig nal processing. Thanks..G.Rajaram


    At this moment, I am working on fft/ifft for OFDM and I read many times your tutorial on it. My goal is to prove that using FFT/IFFT, with a 2/3 rate convolutional coder and a QAM-16 constellation mapping, I can acheive the same or better coding gain then a standard 8-PSK modulation scheme. My problem is to actually find a good 2/3 convolutional encoder with a good minimum squared distance. I tried the one in the tutorial, but with the suggested QAM-16 constellation mapping, the shortest path, is definitly too short to get a significant coding gain. Do you have any suggestion regarding a good convolutional encoder for QAM-16 TCM?

    I hope I was clear,

    Thanks a lot,

  40. Derek Kozel says:

    Hello. The link to the discussion on harmonics under the FFT section is dead. Thankfully the wayback machine has a copy including the wav files.

    Your tutorials are excellent, thank you for taking so much time to write them. It’s unfortunately rare to find someone who has a deep understanding of the material, can communicate clearly and efficiently, and covers such a breadth. Thank you.

  41. hemanth says:

    this material is very good for understanding i really liked the tutorials very much and i request you to post more tutuorials on communication

  42. Dan Sandberg says:


    Just wanted to let you know that I’ve found your tutorials hugely helpful. I spent a lot of time looking at different books and tutorials and yours are my favorite.

    Please write a few chapters on equalizers! I’ve now read many different tutorials/book-chapters and I never manage to keep up with the mathematical notation.



  43. Sumit says:

    I have been following your tutorials for the last five years…and they are really helpful. Thanks

  44. Arunpradhap Natarajan says:

    Dear Charan Madam,

    I have doubt in Digital signal Processing.My question is that for determining frequency component of the samples we are using DFT which involves complex quantity.we kow that this DFT is derived from the complex fourier series of a Periodic signal by tending its time period to infinity then we discretize the fourier transform for finite length sequence.can’t we use the Fourier transform which is derived from the real Fourier series of the periodic signal by tending its time period to infinity then we make it use for finite length sequence which will have only real quantity. this is the Discrete Hartley Transform.This also has fast computation algorithm.Could you explain me abou this.


    Arunpradhap Natarajan

    • Charan L. says:

      Discrete signals are different than continuous signals in that we can not determine the true frequency of the underlying signal. A discrete signal can represent a lot of different analog frequencies. Because of this the DTFT repeats and CTFT does not. We can not sample CTFT to represent the DTFT for this main reason.

      Once the signal is sampled, then you can use either DFS (discrete Fourier series) or DTFT or DFT but not CTFT.

      BTW, whenever we are talking about any kind of “fast algorithm”, we are referring to computation on a discrete series.

      Charan Langton

      • Arunpradhap Natarajan says:

        cant we derive the CTFT in terms of real quantity from real fourier series if so give me that equation


        Arunpradhap Natarajan

        • Charan L. says:

          No you can not. There is no per say connection between real quantity and CTFT. One is a quality of a signal and the other a mathematical procedure on the whole signal.

          This is a very general question you are asking. It does not have a answer in a “equation”.


          • Arunpradhap Natarajan says:

            Dear Charan Madam,

            If I have rectangular pulse with duration 0 to T whose fourier transform is sinc function of only positive frequency or it includes negative frequency also.If it includes negative frequency what is the meaning of negative frequency in the puslse having positive duration only


            Arunpradhap Natarajan

          • Arunpradhap Natarajan says:

            Dear Madam,

            if we can’t derive the fourier tranform from real fourier series then how the Discrete Hartley Transform exists

            thanks with regards

            Arunpradhap Natarajan

  45. Arunpradhap Natarajan says:

    Dear Madam,
    In Hilbert Transform -90 dgree phase shift is produced if we the signal frequency is f>0

    and produces +90 degree phase shift for the signal if the signal frequency is f<0.If I have a bandwidth

    of frequencies 0 Hz to B Hz how could the Hilbert transform will produce the +90 degree phase shift since

    I don't have negative frequency

    Arunpradhap Natarajan

  46. Arunpradhap Natarajan says:

    Dear Madam,
    In Hilbert Transform -90 dgree phase shift is produced if we the signal frequency is f>0

    and produces +90 degree phase shift for the signal if the signal frequency is f<0.If I have a bandwidth

    of frequencies 0 Hz to B Hz how could the Hilbert transform will produce the +90 degree phase shift since

    I don't have negative frequency

    Arunpradhap Natarajan

  47. Arunpradhap Natarajan says:

    Dear Charan Madam,

    If I have rectangular pulse with duration 0 to T whose fourier transform is sinc function of only positive frequency or it includes negative frequency also.If it includes negative frequency what is the meaning of negative frequency in the puslse having positive duration only


    Arunpradhap Natarajan

  48. Fatih CAKIR says:

    I first met via this tutorial(OFDM) with COMPLEX TO REAL… your tutorials are very helpful and
    understandable and it is very important because communication is very hard branch in engineering…so i think your web site second name must be COMPLEX TO SIMPLE… thank you very much and I wish you success…:)

  49. Charan L. says:

    Fig. 27-3 in MIMO tutorial is mislabeled. JB, you are right that the bottom curve is the SISO curve and as we add greater dimensionality, the capacity rises.

    The top curve and the bottom curve, the labels are reversed.
    Thanks for pointing it out. – Charan

  50. Vision 2020 says:

    Where can I get the code for 4*4 mimo systems ? I want to implement it to learn about it.
    Your tutorial is really helpful.

  51. Hi Charan,

    Just a quick email to say thanks for your great website. We’re a maritime VSAt operator (incidentally using various SSL-built satellites..) and your tutorials have been very useful for a number of our guys.

    Many thanks again and keep up the good work!

    Kind regards,

    Bertrand Hartman
    OmniAccess S.L.

  52. Isdren Gineer says:

    You have created a great resource, and I am very appreciative of the effort you have put into creating it.

    I noticed that one of the keywords to this post is ‘Proakis’; perhaps you meant to use ‘Lyons’. You’ve written a great review and it would be a shame for someone searching on Lyons to miss it.

  53. Gunther March says:

    I’m working on the Link Budget analysis for my master thesis.
    I didn’t understand the differences between the two methods for Link budget analysis. There is the Eb/No method but also the SNR method to evaluate the link margin and all results.
    The results of the two methods are different. I didn’t understand what is the difference between these methods and what result is good for me.
    Link margins are very different!!!

    Sorry for the trouble. Thank you in advance.

    • Charan L. says:

      We use the EbNo method for digital signals such as QPSK, 8PSK, 16APSK, 32APSK etc. The metric of performance for these signals is the EbN0 vs. the Bit Error Rate (BER). So we first set a BER that is desired, say 10-6 and then determine what EbN0 would be needed to deliver the required BER. Depending on the code used, this may vary for a given modulation by 1-2 dB. The goal of a link budget where data is digital is to provide this minimum EbN0.

      Analog signals do not have BER. They are judged instead by SNR, signal to noise ratio. For an analog signal such a FM signal set, or SSB signals, an average SNR and a peak SNR is usually specified based on number of signals sharing the bandwidth. The peak SNR can often be 10 to 14 dB higher than the average. The goal of the link budget for analog signals is to provide the peak SNR.

      So the two methods you are talking about pertain to traffic types and will of course give completely different answers since there is no simple way to compare a FM/AM signal with a MPSK signal.

      Charan Langton

  54. sungkyu says:

    I want to say thank you for your this effort.

    I think you missed the Figure 17 on 9 page.

  55. Paul Mohan says:

    Charan –
    I have had Richard Lyons ‘Understanding DSP’ on my bookshelf for many years now (his 1st edition, 1997) and very much agree that it is an exceptionally well written and highly useful volume. I have refered to it many times during the course of my work in signal processing engineering.

    A question if I could. I have recently been reviewing in detail his discussion on Quadrature sampling with Digital Mixing – Section 7.2. I am having trouble reconstructing the basis for the spectral replication he has illustrated in Figure 7-3(d) (pp. 302), which also has the associated text: ” ..the spectral replication period in Figure 7-3d is half what is was in Figure 7-3c”. Would you know if RL has issued any errata notes that relate to this specific section, or perhaps updates/corrections that appear in later editions of this book?

    Best Regards.

  56. padma says:

    Please send me the amplitude modulation

  57. Dacosta says:

    Am studying analog anddigital communication,I really don’t understand the terms like QAM,FPSK,QPSK,FSK ETC

    • Charan L. says:

      Well then you should read some of these tutorials I have here, particularly the one on modulation which explains what these terms mean.

  58. Hello Paul Mohan,
    You are correct. There is an error in my Figure 7-3(d) in the First Printing of the 1st Edition of my “Understanding DSP” textbook. Good for you for detecting that error. (I corrected that error in later Printings of the book’s 1st edition.) With that thought in mind, I have two things to say to you:

    [1] Please send me an E-mail, at, and
    request the errata for the 1st Edition of my book. That errata will tell you how to correct the Figure 7-3(d)’s error. I encourage anyone who has a copy of any edition of my book to E-mail me and request the appropriate errata for their copy of my book.

    [2] Paul, the “Quadrature Sampling” and “Digital Resampling” material in Chapter 7 of my book’s 1st edition was my first attempt to write about those two topics. I have subsequently expanded and improved my discussion of those topics in later editions of my book. To be clear now, although it would benefit you to do so, I’m not trying to convince you to buy the latest edition of my “Understanding DSP” book. With regard to quadrature signals and quadrature processing, I have an improved version of my discussion of those topics at the following web site:

    When you have nothin’ better to do, I recommend that you have a look at that web site. It’s free of charge.

    Good Luck,
    [-Rick Lyons-]

  59. priya rawal says:

    ma’am will u plz mail me a tutorial on ofdm

  60. amarishnegi says:

    thanks a lot for providing ISI notes .I will be thankful to u if u provide gram schmidt orthonormalization notes .

  61. NISHANT GHOSH says:

    “In AM synchronous demodulation, Why we don’t divide m(t)coswt by cos(wt)
    instead of multiplying by cos(wt)?”
    The divider circuit (or the system that divides m(t)coswt by cos(wt)) is non-invertible system. In the whole modulation and demodulation process we want a robust transmission of m(t).

  62. nishant ghosh says:

    Divider circuits are non-invertible systems. Here our system is just passing the message signal to the receiver terminal. If we are passing m(1) then we will get m(1) at the receiver but if we wish to transmit m(pi/2) then you cannot obtain m(pi/2) at the output…. you will have an indeterminate mathematical form which is not desired…

  63. Basa says:

    Your tutorials are wonderful. Everything is lucid and clear.
    I have found this tutorial website on simulation of digital communication using Matlab. Do take a look.


  64. sandeep says:

    i am doin project on “A low complexity MMSE for OFDM system over frequency selective fading channels”i wanted the source code n theory behind this project..

    • Charan L. says:

      OFDM performs best when it is used in frequency selective channels. I am not quite sure what you are looking for. I don’t offer a lot of code, as one needs to understand the theory first. The tutorial hopes to make the OFDM theory understandable and hope it has achieved that goal for you.

  65. Ben Thomas says:

    I have been an electronics engineer for nearly a decade. Although I was only recently steered towards this site by a friend, the experience of going through these tutorials was like meeting a friendly and extremely interesting stranger whose charm does not fade with time, thank you for this excellent content and wishing you the very best.

  66. Vishwas S Patel says:

    I have a basic doubt. Consider a sine wave, if you take two times the sampling rate according to nyquist theorem. If 2 samples taken in a single period is at 0degree and 180degree.. Then we end up having all zeroes.. Can you please explain it?

    • Charan L. says:

      Okay, what sine wave can you fit through these two points? Many, but the one with the smallest frequency is 1 Hz. And that/s all Nyquist is saying.

      Actually the 0 points mean that you have used a NYquist frequency that is exactly 2 timrs, but the definition says it needs to be larger than two tims the maximum frequency even if infinitesimally. Once you increase it a tiny bit, more than two times, you will not get those zeros and then can fit many harmonics through those points.

      Charan Langton

  67. stone says:

    Great website!
    Thanks for you work.

  68. Franklin says:

    Can you please tell me how to find HILBERT transform from a given complex envelope and also the solution for the following example.

    My question is as follows :

    1)The complex envelope of a signal s( t ) with respect to f0 = 50 Hz is sin ( πt )/(πt).Find the complex envelope of Z(t)= s(t-0.01) with respect to 50HZ

    • Charan L. says:

      The first signal is a perfect passband filter centered at 50 Hz. A .01 sec time shift in this signal is equivalent to as half Hz frequency shift in the envelope of the signal or a phase shift of pi.

      • Franklin says:

        The given first signal sin(πt)/(πt) is the complex envelope of the s(t).So i think the approach to that question is to first find the original signal s(t) and then find the complex envelope of the delayed signal.
        I was able to find the original signal as s(t)=square root of 2 multiplied by
        cos(100πt)(sin(πt)/(πt)) But i was not able to find the complex envelope of the delayed signal.
        Can you please help me in finding the complex envelope of the delayed signal.

  69. Vineet G. says:

    Hey,Charan! I can’t thank you enough for these tutorials.They have just increased my liking for the subject.I read this tutorial and this doubt is bothering me.

    For generating a QPSK signal, we used 2 baseband signal(I and Q) with 2 levels(+1,-1),multiplied it with 2 quadrature carriers,and got a signal with four distinct symbols. So,the question is,can we have only one baseband signal with 4 different levels and multiply it with a single carrier? Wouldn’t that,too,give us the same signal? Obviously,the baseband processing required would be more complex to have 4 levels.Is that the reason we don’t do it?

    Thank you.

    • Charan L. says:

      Yes, it can be done but such a signal would not be a QPSK signal. It would have different amplitudes for th symbols. All four QPSK symbols have the same amplitude, only the phase if different. The advantage is that this signal is what is called a constant-envelope signal. This type of signal is immune to amplitude-based nonlinearities. AS such QPSK is signal created by the two I and Q signals is a much preferred signal than one created as a four level signal. Now a 16QAM signal is similar in idea to what you are talking about but again, it also has a I and Q component.

      The other issue is the speed. It is so much easier to take a single carrier source, slow the symbol rate and operate in parallel on two signals at half the speed than working on just the real signal.

      Charan Langton

  70. Arthur Gray says:

    My professor recommended your site and thank goodness I saved all her suggested reading. I’m a nerd at heart and would to say thank you for tutorials. Have a blessed day.

  71. Arthur Gray says:

    Oops. I meant to say I would like to say thank you for your tutorials, Mam. Pardon syntax. I know better.

  72. mary says:

    thanks alot

  73. Henry says:

    Hi! Do you have a idea how to design a root-raised cosine filter band-pass? I didn’t find a design tool on the web. There are several pages for low-pass variant but not for band-pass type in a OpAmp design.
    Is this something secret?

    Thank you!

    • Charan L. says:

      The process applies only at lowpass. Which is to say only to the symbol shape which is presumed to be a lowpass signal.
      It has two roles, one is pulse shaping and the other is filtering so you can see that it is doing both functions, one in time domain and the other in frequency domain.

      It is a slower process when done in time domain (lowpass) and this is how it is done.
      Usually upconverting is the last process you want to do before transmitting and you do not want to do much signal processing after that point other than frequency domain filtering.

      Mathematically of course you can apply the RRC any where, it is just a multiplication by a shaping function at a particular symbol rate.
      You can try that in Matlab. Take a square pulse, multiply it by a carrier and the multiply it by the shaping function. Do the FFT, the baseband shape is shifted to a carrier frequency, thats all.

      But in hardware a passband RRC that would mean that we would have apply it now in the frequency domain and that is not nearly as practical as doing it in time domain.

      Charan Langton

      • Henry says:

        Thank you Charan! Please drop me a PM. I will then send you an example of a time-domain RRCF band-pass. So you can see what I mean and try to simulate.

        • Henry says:

          Hi Charan!

          I sent you the answer PM but your email provider confuses to pass the mail because of SPAM consideration. Even another sending email address shows the same effect.

          You can read the PM here including attached files:

          And please unlock my email adress.


  74. shid says:

    Can you explain more clearly about peak to average power ratio in matrix persepctive or other ?

  75. Just wanted to offer a sincere thanks for going to the trouble of putting together such a great site. You have a gift of making complex concepts easier to understand. This is a great use of the internet.
    Best regards. Jim

  76. Damoon says:

    Dear Charan

    At first thanks for really helpful tutorial. I have a question:
    when we use guard interval our goal is protection, as I understood from tutorial we do it for each
    sub-carrier. Imagine we have c1, c2, c3 and c4 as carriers. The issue of delay is between for example c1 and c2 inside of one composite OFDM signa? or between c1 and the delayed version of next symbol which is transmitted by c1? In tutorial you said symbol 0 and symbol 1, symbol 0 , so both of them are from same carrier?
    Thanks in advance

    • Charan L. says:

      The delay comes not between each of the symbol on the subcarriers but between adjacent composite symbols.

      Assume that time is i = 1. So we have symbosl s11, s21, s31, s41, wehre first index stands for the subcarrier and the second for time. These are then multiplied by carriers and we get

      s11xc1, s12xc2, s13xc3, s14xc4. We add these and we get the composite symbol for time 1.
      This is where we add the time delay or the cyclic prefix.


      In the next time interval, we have


      or in time domain, we are transmitting;

      s11c1+s12c2+s13c3+s14c4+ (1/8(s11c1+s12c2+s13c3+s14c4)) + s21c1+s22c2+s23c3+s24c4+(1/8(s21c1+s22c2+s23c3+s24c4)) + ….

      So the delay is between composite symbols. IN a real system there are 2000 of these.

      Charan Langton

  77. Damoon says:

    Many thanks for your reply. So is below conclusion true:
    delay is between each of sij*cj and s(i+1)j*cj (i stands for time and j for carrier)? and in reality we add guard interval to whole composite signal and because it’s a linear comibination it goes to each of the sij*cj and s(i+1)j*cj?

    • Charan says:

      Yes, that is correct. The sum is linear bcause the c

    • Charan says:

      Yes, that is correct. The sum is linear because the subcarriers are orthogonal to each other. So each composite symbol is unique because it is adding about 2000 modulated (subcarriers multiplied bit).
      The cyclic prefix is sualy about a 1/8 of the composite symbol, replicated and pasted at the end of the symbol.


  78. Damoon says:

    Another question, we increase the duration of symbols to achieve less bandwidth in frequency domain(subcarriers equal frequency). Then we are able to divide main bandwidth to for example 2000 subcarriers which each of them has the same width e.g. deltaF. I faced with this formula :
    Tsym=(Number of subcarriers e.g. 1024)*ld(M)* Tb(duration of one bit)
    where ld(M)=logbase2(M)=m(number of bits which depends one modulation scheme)
    and this Tsym should be the same for all of subcarriers and also the composite signal
    two questions that I couldn’t give them answer:
    1)if we use different modulation schemes(QPSK,16QAM,64QAM) for different subcarriers(like what happens in LTE)so du to this formula how can they have the same pulse duration?

    2) In implementation where and how this increase in pulse duration happens?

    Thanks for your attention

  79. Charan says:

    1. For all these modulations, the symbol time is exactly the same. Only bits per symbol are different. So lets say you have three subcarriers each with

    c1 -> QPSK
    c2 -> 16QAM
    c3 -> 64QAM

    then carrier one will have a two level signal (assuming complex carrier), c2 will have a 4 level signal and 64 will have 8 level signal. But the symbol duration for each must be the same otherwise you can not make OFDM work.

    I am not sure what this formula is.

    Symbol rate is determined by the subcarrier spacing. It is equal to spacing times 2, at most.

    So total Rs = Num of subcarriers * 2*spacing

    Bit rate if all modulation is same is the M times that.

    If subcarrier spacing is 1 Khz, then Total Rs = 1024*1000*2

    You would then reduce this by the cyclic prefix and pulse shaping.

    All this happens in the IFFT block at the transmitter. If pulse shaping is used, it is applied after the composite symbol is created.

    Charan Langton

  80. Henry says:

    Hello Charan –

    Did you read the reply? I sent comcast an unblock message.
    If you don’t like to email with me just say it. I like to be informed.

    regards –

    • Charan L. says:

      Hi Henry, I did get an email from you but what you sent I can not read.


      • Henry says:

        Hi Charan –

        What did you mean with got email? The content of the mentioned web-link? That is a plain-email format every local email reader can read. Anyway, I added it as a text-file on this link:


  81. ella says:

    Hi Charan, i had a question about “all about modulation part2” which i coudnt find it in the list of tutorials, there youve mentioned that adding noise of one half of difference between the two discriminating amplitudes, will make the error, but using this amount of noise in the expression, doesnt change for example 1 to 0, it will be great if you could explain it for me!
    thanks a lot for all great tutorials

  82. ella says:

    if there is any thing else to read and finding out let me know please

  83. I really enjoyed the simplicity and fun part of your writing style. I re-learnt a lot of things about DSP.

  84. Antriksh says:

    I and my students are very thankful to you Charan for your tutorials and sincere efforts to make the tutorials easy and quick explanatory.especially your tutorial on Viterbi has helped me a lot to understand and teach precisely .
    Hope to see some book on Communication soon.

  85. Rao says:

    Great Website LOVE IT!

  86. Karthik Ram KV says:

    Hi Charan,
    Your tutorial on OFDM was simply superb. A complex concept is explained very simple with comparisons to single truck shipment and multi truck shipment analogies and also water flow in faucet and shower analogies…. Hats off man…. Thanks a lot…

  87. Jose Chavez says:

    Very Nice job, I am from Argentina, and I am studying Fourier.
    This job of great help to understand Fourier
    Many Thanks

  88. John says:

    I recently just found your tutorials and looking forward to reading it.

    I’m amazed at how simply and clearly you explained this, with math! Thank you!

  89. Ade says:

    Great!. I love and like it.

  90. abdalkhalik says:

    Thank u very much, this is very useful site

    i have an interest in Coding Theory and i’m currently studying polar coding however i cannot find any book that talks about polar coding

    does any any know any book that can help me???

    thank u

  91. David Lee says:

    Hi. I seem to be having some issues where the right side of some figures and equations seem to be cut-off. I used Chrome and Internet Explorer thinking that maybe the browsers rendered the .pdf incorrectly, but this cut-off appears on both copies.

    Anyone else having this issue?

  92. David Lee says:

    Hello Charan,

    I love this website. I just finished my MSEE project, and your tutorials on MIMO and OFDM were both extremely helpful in learning these topics (especially since my program isn’t up to date and doesn’t quite cover these topics).

    Just a note: On tutorial 10 (TWTAs), the right side of some figures and equations seem to “end early.”

    Thanks for your using your free time to teach the next and existing generations of comm engineers 🙂

  93. Maruthi Prasad B N says:

    Good analogy towards the complex concepts…..!!
    found it worth sharing..
    thank u…

  94. aashika says:

    the notes given are superb and very helpful to get an idea about the concept .Thank u

  95. rggg says:

    I wasn’t able to understand OFDM , until I came across the tutorial here. And I just can’t remain quiet without thanking you. This is the best and most clearly written resource on OFDM that I’ve come across till now. Especially the part which explains why we can use IFFT on a time domain signal cleared a lot of my confusions.

    Thank you very much for this great tutorial and others. Wish you a lot of success.

  96. Michael Gutmann says:

    Dear Ms. Charan Langton,

    I want to thank you for this website. I searched long and hard on the web for a straight-forward explanation of the Hilbert Transform and I found many mathematics articles which began by stating what an important transform it is but without any explanation of its application. Your tutorial on the subject here was very clear and gave the reader both a basic understanding as well as a good level of the mathematics. Your concrete example at the end of the tutorial, where you show all the steps to using the transform with the function f(t)=4cos2t-6sin3t was brilliant!

    Your have a real gift for taking a very complex subject and explaining it, both at an overview level and with a level of mathematics that does not dumb-down the subject but provides excellent depth. I hope and wish your material is getting disseminated widely because it is rare (almost impossible?) to find this kind of technical writing elsewhere.

    I will say that many of the figures and equations come across somewhat mangled when viewed with the Chrome browser. I don’t know if there’s anything that can be done about that. Of course, what is really needed is for you to publish your material in textbook form!

    Incidentally, I did an search under your name to see if you had published a textbook with the Comms material at this site and found there were a number of elementary math books (verbal texts?) with yourself as the co-author. That was surprising to see, based on the sophistication of your Comms site here.

    In any case, thank you once again for your wonderful contribution and making it available on the net. I look forward to reading many more of your tutorials here.

    Michael Gutmann
    Instructor, Dept. of Math
    University of Portland
    Portland, Oregon

  97. joel lason says:

    there is an error in the H matrix illustration related to the rows in the top part of the matrix:

    is [111; 011; 0101; 011] should be [111; 011; 0101; 110]

  98. joel lason says:

    this is in relation to the [7,4] definition. and in the above comment I meant that

    [111; 011; 101; 011] the Most significant 0 in the third row is superfluous .

  99. Cindy says:

    Thank you very much for the tutorials.

    I think that in Figure 1, it should be a positive sine; in Figure 2, it should be a negative sine.

  100. Ali says:

    It’s great.

  101. Zefyr says:

    First off, I really appreciate the effort and lucidity with which these topics have been addressed. It really helps to get a physical feel for such mathematical topics which is important.
    I have a question about EVDO. From what I’ve read on the forward link, this uses TDM. There also seems to be some spread spectrum but I do not understand it.But is there a spreading gain also?
    I don’t understand for example how the 38.4 Kbps rate using config of (1024,16,1024) is generated. The generic transmit block diagram shows the incoming data bits being split into 16 streams each at 76 ksym/sec and then each spread by a factor of 16 and then summed. Is this spreading or just 16-ary Walsh coding?
    So how do I know what the spreading gain for the 38.4 Kbps stream is versus a higher bit rate stream. If incoming streams are always at 1.228 Mcps/sec and then split into 16 streams and spread- is this really any spreading gain??
    Also how is a single packet sent over 16 slots. Is it just repetition coding- that does not seem like it would provide the negative SNRs.

  102. hunter says:

    please elaborate how have you come up with mathematical expressions of summation with 1/2pi.i really can’t understand

  103. skalpa says:


    The tutorials are very nice and useful.

    I have one request. If you could add appropriate matlab code to implement a concept and test, it will be really helpful while reading the concepts.


    • Charan L. says:

      I have started to do that with the newer topics. Previously I was using Synopsys SPW for which there is no code since it is a object oriented simulation program. Now for many of them I am using Matlab so I have indeed started to add the code.

      Charan Langton

  104. Kris says:


    I don’t know whether this question can be asked here. But kinldy guide me, if you know the answer

    I have a 3 node system, with nodes in a line and the center node is taken as receiver equidistant to the other nodes.

    My objective is to get BER at receiver in Rayleigh fading channel, with one of the nodes as interferer to the other node’s transmission and BPSK modulation is used.

    With fading channel coefficients known at receiver as h1, h2, I tried to get BER using threshold detection as

    Assuming source transmits +1, BER is

    P(received signal<0)=P(|h1|+|h2|i+n<0) {where i:signal from interferer (+1, -1)};
    n: AWGN
    =P(n<-|h1|-|h2| given i=+1)*P(i=+1)+P(n<-|h1|+|h2| given i=-1)*P(i=-1)

    Finally I averaged over |h1| and |h2|.

    Then it is observed that BER with fading is lower than Ber without fading for high values of SNR.

    Kindly let me know whether this analysis is correct.

    Thanks in advance,


    • Charan L. says:

      Hi Kris,

      Not clear if you are going a simulation or a closed form solution.
      You will find the comparison of the closed form BER for a fading vs. a AWGN channel in my MIMO tutorial.
      And yes, you should get a higher BER for for same SNR under a fading channel.
      So you have some issue in your analysis.

      Charan Langton

  105. Jorge says:

    Hi Charan,

    Awesome tutorials. I’ve been working on designing an OFDM scheme for a a channel. We were told to assume that a channel bandwidth of 1MHZ is available.

    The channel has the following multipath profile:
    t(us) 0 1 2 3 4 6
    P(db) 0 -10 -20 -0 -20 -20

    I am asked to determine the required frequency spacing for the subcarriers such that each subchannel experiences a flat channel. Determine the resulting OFDM symbol period and Cyclic prefix to ensure no ISI among OFDM symbol.

    So far this is what I’ve done:

    my delay spread is : 1.49us
    Bc0.9: 13.3 KHz, therefore my subcarrier frequency spacing is 13 KHz.
    Number of subcarriers : 76.92
    My OFDM symbol period is: 76.92us

    when it comes to finding out the CP, i’m not sure if I can assume it to be 5us.

    Am I on the right track here or really off it?


    • Charan L. says:

      Your CP needs to be just a little greater than your delay spread.


      • Jorge says:

        Thanks a lot Charan, your reply brought me back to life.

        I actually thought that CP needed to be greater than the second moment of the power delay. It makes more sense now.

        Can I conclude my required frequency spacing for the sub-carriers to be 13 KHz ( as I got a Bc0.9= 13.3 KHz)and a a symbol period of 76.92us, so that each sub-channel will experience a flat channel?

        Thanks for your help and advice.

        • Charan says:

          hi Jorge, the frequency spacing should be more than the coherence bandwidth. Can you calculate that and see if it is near the 13 kHz. The other thing is that you need a power of two number of carriers so if your total bandwidth divided by the 13 kHz is not the power of 2 number, then you will have to zero pad those extra carriers and can not count them as carrying data.


          • Jorge says:

            Hi Charan,

            I’ve been working on calculating that frequency spacing. I came across an info which states that the sub-carrier spacing is the inverse of the symbol time less the guard period; and that the guard time must be 2-4 times the delay spread. Is this accurate?

            Btw, I thought that for flat fading the sub-carrier spacing needed to be below than the coherence bandwidth.

            Anyway, I’m a bit confused, but i’ll keep trying to calculate that sub-carrier spacing.


          • Charan L. says:

            I am going to assume that this is the max delay spread. Now the coherence BW is 1/DS = 666666 Hz. (I had a 2pi factor before, ignore) This is less than your bandwidth of 1 Mhz, so the channel will experience fading, but not a lot.

            So any spacing for the sub-carriers less than this amount will do.
            The number of carriers will depend on the standard you want to use. If you use 802.11, and you choose 48 carriers, this will give you a spacing of 20.8Khz.
            For 48 carriers, we get Tn = 48mus.
            Cyclic prefix we can set as 1/8 of above or 6 mus.
            Symbol time would be 48 + 6 = 54 mus.
            Throughput is 1 msps minus the CP overhead.


  106. Charan says:

    Coherence bandwidth relates more to total symbol rate. It is directly related to delay spread.
    2pi/d. For the delay spread, you do not need four times the delay spread, that would be adding a lot extra overhead. No more than x2 would be my choice.
    Yes, the spacing needs to be less, not more than coherence bandwidth not more. I said it wrong.

    Your coherence BW comes to about 4 MHz, but you are allocated 1 MHz. So you are limited in spacing by how much data you want to transmit. The maximum is 1 Msps which would require app. 1 Hz spacing and 1 kHz of data would need app 1 kHz spacing. (minus the CP overhead in each case). Hope this helps.

    Are you using a standard OFDM or can you create anything you want?

    Charan Langton

    • Jorge says:

      Thanks again Charan,

      I’m using standard OFDM. All I have to work with is the multipath profile, which is :

      t(us) 0 1 2 3 4 6
      P(t)(dB) 0 -10 -20 0 -20 -20

      And of course, a channel bandwidth of 1 MHz available. I began by determining the required spacing for the subcarriers such that each subchannel experiences a flat channel.

      For this I calculated the first moment of the power delay profile (taking into account the multipath profile), which came to 1.51us. Then I calculated the second moment of the power delay profile, which resulted in: 4.53us.

      Having these results I then estimated the delay spread, which resulted in: 1.5us. Then, my coherence bandwidth: BC0.9: 13.3 KHz (and BC0.5: 133.3 KHz). I only took into account BC0.9, hence I assumed a frequency spacing of 13 KHz.

      When you say that my coherence bandwidth comes to 4Mhz, is there something I’m miscalculating? or not seeing when applying the formula?

      I know asking this may be silly, but I rather ask than regret later. Sorry for dragging this issue.

      Thanks a lot Charan.

      • Charles says:

        By using Wc:2pi/d you’ll get 4.18 Mhz, around 4Mhz, but When using Bc0.9 formula according to you multipath the result is different. I’m fairly new to OFDMA, so that’s all I can do to help you. Wait to c what Charan has to say about it.

        Sorry Pal.

    • vishal says:

      i studied bandwidth so much that i dont even know what it is anymore!
      for instance 1.laser has higher bandwidth than led’s
      2.optical fibre bandwidth is 10^20 hz something ,which has many channels than copper wire
      3.copper wire and optical fibre are just single conduit ,how can they have may channels .
      these are silly questions but i studied so much on this ,,, i am not able to get insight on this
      please clear my doubts

      • Charan L. says:

        It helps to think of bandwidth as lanes with finite widths on a freeway. Let’s say that the freeway is 500 feet wide. We have six lanes, one on the left edge is narrow and only 20 feet wide. Then we have a wide lane which is 150 feet wide, then we have three more at 100 feet wide. Then we have one at the right edge which is also 20 ft wide. The total space taken up by these lanes is 20+150+3(100)+30 = 500. Now give these lanes name.
        Lane 1: 0 – 20 ft, A Band
        Lane 2 – 20 – 170 ft, B Band
        lane 3 – 170 – 270, C Band
        Lane 4 – 270 – 370 ft, D Band
        Lane 5 – 370 – 470 ft, E Band
        Lane 6 – 470 – 500 Ft, F Band

        The freeway is the electromagnetic spectrum, for 0 Hz to infinity Hz. We divide it into lanes of certain frequency band and those are called bands. Each media is capable of operating in only a few of these bands. Energy can travel in wires only in the lower bands, wireless can operate in pretty much all. The regulatory bodies control at which frequency you can transmit and assign you a small part of a band, and that is the bandwidth that you are assigned. You as an operator can then further subdivide the allowed band if you want, or use all in one channel.
        For example, a satellite operator is allowed to use a band of 12 GHz to 13 GHz for downlink. He can take this 1000 MHz and then subdivide into ten 100 MHz channels. Then he would design his system for 100 MHz (often called transponders) and then place these like lanes on a freeway next to each other separated by 100 MHz center frequency. Each of these sub-bands then has a center frequency and a bandwidth, which is of course 100 MHz, the width.

        A media has a bandwidth “capability” but then there is the bandwidth that you are allowed to use. So one is the characteristic of the transmission media and the other is where you are allowed to operate.

        The allowed frequencies are allocation by the ITU and best thought of as lanes on a road where you may drive and the media capability is best thought of as the with of the car that travels in that lane. The car with width is the media capability and it is always less than the allowed band in which it operates.

        In this picture the colored bands are the allowed ranges.

        Charan Langton

  107. Jay C says:

    Great piece of history thanks or sharing!

  108. Charan L. says:

    What is the link, can you post it here, please.

  109. Anthony P. Volta Jr. says:

    I think your tutorials are great. They’ve helped me to understand the concept much more clearer; therefore, improving my ability to explain complex concepts at a more laymen’s level.

  110. John says:

    Great tutorial. I’m trying to understand more with this tutorial. Can you explain a little further how you got equation 14 (Maybe, I need to find out where Ref. 1 is) and I don’t see how you substituted those equations into equation 13 to get equation 15.

    Also, I’m having a hard time understanding how you got modulation index of 15 on page 12 with the FM signal FCC example. How you got 5 to be the denominator?

    Thanks you!

    • Jeff Patterson says:

      In Fig. 6, the integrator and differentiator blocks are reversed. The description above is correct. The description in the caption matches the figure which is incorrect.

  111. skalpa says:


    I am new to DSP and I was trying to understand ISI and reading your document on ISI

    Can you kindly clarify the following?

    The frequency domain representation ( for low pass) as indicated in the document, has values between -8 to +8. What to the values on x axis ( -8 to +8 ) represent, if it is frequency, what does a negative value indicate?

    My understanding of the diagram is that, it indicates the amplitudes for various frequency components of the square pulse. Am I right? If so, what does the maximum amplitude at frequency 0 indicate?

    Can you kindly explain?


  112. josephat says:

    i will be glad to see the analysis of blind channel equalization algorithms, especially adaptive one basing on stochastic gradient methods. honestly i have to thank you a lot for your support in academic success.

  113. Charan L. says:

    Hi Kalpa,

    The numbers represent the complex exponential and by proxy frequency. Yes, I know that sounds even more confusing than what you asked. But please read the Fourier Transform tutorials carefully and you will begin to understand the issue of negative frequency. Its a hard thing to explain in one line. I can do it flippantly and say that frequency is actually a vector and has a direction just like velocity, which is a scalar as well a vector with a direction. But that is only part of the story.

    Charan Langton

  114. Muhammad Khurram Kiyani says:

    As per my understanding Ux should not come in equation 1.11 because this equation depicts variance with zero mean.

  115. skalpa says:

    Hi Charan

    Thanks for your reply. I am new to this domain. I am trying to read fundamentals. So I understand that to get to the depths, it will take sometime.

    I am trying to understand the receiver side of the communication. In particular I want to understand concepts behind frequency Offset , Phase Offset estimation and correction and Timing error and implement the same . Can you give me some good pointers to these ?


  116. Feng Ouyang says:

    I just came across the tutorial collection and would like to express my gratitude and support to your cause. I am an engineer in data communications and am preparing a course on digital communications systems. I look forward to benefiting from your work.

    If there is any way I can help, please let me know.

    Thank you again for your inspiration and effort!

    Feng Ouyang

  117. Gopal Sarkar says:

    I like this webpage

  118. Feng Ouyang says:


    I finished reading part 1 and part 2 of the Turbo code tutorial. It is the most useful material I have ever found. You really spent the effort to understand the details, unlike some text books, which just blindly copies other books. Thanks again!

    I have a few questions and comments.

    1. On page 3, you said: “According to Shannon, the ultimate code would be one where a message is sent infinite times, each time shuffled randomly”. Would you like to elaborate how you inferred this from Shannon’s paper (or somewhere else)? I just read Shannon’s paper recently and did not get that revelation. Also, if you repeat a message infinite times, wouldn’t your coding rate go to zero?

    2.On page 7, last paragraph, “for a M-PSK, there would be 3N bits…” Should it be 8-PSK? Otherwise, I don’t understand where the 3N come from.

    3. On page 9 after equation (1.1), the text says “This is a sensitive metric, quite a bit better…”. Is that a typo from “sensible”? Otherwise, could you explain what is the metric sensitive to?

    4. On page 10, second to the last paragraph, it seems “Fig. 8” should be “Fig. 9”.

    5. On page 11, there is a “reference source not found” error.

    6. On page 16, you spent quite some space to discuss how to get P(u_k) from L(u_k). However, I am not clear on where this information is used. It seems in the iteration process, we only care about L_e. Only at the final output we need to convert L(u_k) to P(u_k). And even that is often unnecessary. L(u_k) itself is a good soft decision metric. And if we need hard decision, we just look at its sign. Am I missing some points here?

    7. In figure 1, you have the notation that y_k^{i,p} representing the parity bits in the code, where i runs from 1 to n, indicating the n rate-1 encoders. Later, in equation (1.22) and onward, there is a summation of i=2 to q. Is this also summing over the encoders, or the parity bits of the same encoder (which is rate 1/q then)?

    8. On page 12, when discussing how you can divide the y sequence into three parts and why you can drop some dependencies in the probability expressions, you might want to mention that this is the property of a causal code and a memory-less channel.

    9. This is probably related to question 6. I read many books and papers but still don’t have a good justification of using L_e as feedback a priori probability. Why don’t we use the whole L instead, for that purpose? Is that an ad hoc choice or is there a deeper reason behind?

    Thanks again for your contribution! It’s a great pleasure reading your tutorial. If you find it easier to discuss in email, I’d be happy to do it, as well.

    By the way, I cannot find your tutorial on LDPC. I hope you will have it soon. 🙂


    • Charan L. says:


      Thanks for all these comments. I am trying to finish up a book so don’t have time to go over this subject.
      I can send you the word document, perhaps you can mark your edits there for me.
      It will be a lot easier for me to understand your comments that way.


  119. Darren O'Connor says:

    Thank you so much for the effort you have put in to make these topics so approachable. Your section on modulation (All About Modulation Part 1) is the most understandable description of the topic I have found. I wonder if you would be open to adding a short section showing the spectrum of, for example, QPSK modulation, being the convolution of the baseband and carrier signals. I would be happy to help if you find your time too committed at this time. And if you want to leave well enough alone, it is still a great explanation of the topic!

  120. girija says:

    Tutorials are really excellent. But few are corrupted. How about replacing them?

    The corrupted files are i)Tutorial 14 ii) Tutorial 24a

    I would be thankful to you if you can mail those two files.

  121. Husam Fahmi says:

    I am currently doing my Master’s in telecommunication, and while I am hardly a DSP guy, OFDM is clearly important in everything. I have really enjoyed your simple (and example-supported) explanation, and wanted to thank you for all your effort. The tutorial definitely goes in my “background folder” if ever need to refresh my memory!

    Best Regards

  122. Haymnoof says:

    Many thanks for your helpful notes. I learnt a lot from it.

  123. Hasan says:

    Hi Charan,

    This website is awesome. You write the tutorial in such style that a beginner like me can understand the concept. You did a great job. I really want to say thank you for what you are doing.

    I am also looking for LDPC Code tutorial. But unfortunately I did not find it in here. Could you please write a tutorial about LDPC Coding and Decoding? I really like your explanation style. I hope you grant my request.

    Thank you again.

    Best Regard,

  124. Lukas says:


    Very nice tutorial 🙂
    When taking a look at figure 8 I see phase shifting at points X=160 and X=190 although binary value doesn’t change – why?

    Best Regards, Lukas

    • Charan L. says:

      Good catch.

      I think I used a QPSK signal to create these pictures. The QPSK symbols are not on the x-axis so they are not the same as a BPSK signal. I will correct this one of these days.
      The bits and the transitions should line up.


  125. Imran Shaf says:

    Dear Madame
    Good Day

    I am not clear as to how a complex envelop is useful in simulation for low pass as well as modulated signals. Specifically, the explanation given that we no longer need to do simulation at carrier frequencies and just required to do the same at highest frequency of signal, needs clarification

  126. Naveen Manikandan Periasamy says:

    I’m looking for the mathematical expression for Pulse Width Modulation. I believe it is something close to the following,

    Y(t)=X((t/W)+Theta) (Y is modulated signal, X is square pulse, W is width and Theta is phase shift)

    Please correct me if I’m wrong.


  127. Houston Galloway says:

    It’s been 20 years since I needed to delve deeply into these concepts. I’ve been building lasers, imagers, and other photonic devices until recently and was struggling to come back up to speed. Your website and very lucid explanations have helped considerably. I’m so glad I stumbled into it. Thanks for your efforts to educate us all.

  128. Daniel Patiño says:

    I want to say: thank you, your work is extraordinary.

    Best regards.

  129. Kaustubh joshi says:

    Hi Charan,

    I would like to thank you for this information and congratulate you on all the effort you must have taken to provide this information.
    I sincerly thank you again.

  130. sowmiya krishnagopal says:

    hai mam i am doing my BE final year.I am gng to do project on “energy efficiency power adapative spatial diversity” the ppaper wasx published in IEEE .kindly give me an idea how to make changes in this paper mam.

  131. Scott Parks says:

    Thank you so much for your site. I am a practising systems engineer, who has to integrte communication systems into larger systems of systems. Your site is invaluable to me for refreshing my understanding of communications concepts and designs, so that I can specify meaningful capabilities when I talk to true communications engineers.

  132. Chuck Sampson says:

    Thank you for posting these in-depth, intuitive tutorials. As an experienced engineer I have used them as a refresher for maintaining my understanding of these fundamentals I still use today. You have a unique way of explaining recondite material and making abstract concepts more concrete without losing any meaning or over-simplifying. It looks as though you have the makings of a classic book on communications. I hope you consider writing one.

    • Charan L. says:


      Thank you so very much.
      Really appreciate your kind words. I am glad the material is helpful.
      I enjoy writing these but going is slow.
      Thanks again,


  133. Keertana says:

    Hi Charan,

    This tutorial on ofdm has proved to be really really enlightening. I have read a lot of other tutorials but nothing comes close to this. I am writing a thesis on low-power wireless systems and would like to use certain explanations from your tutorial. Would you grant me the permission for the same? I would only be using it to explain OFDM while my thesis is much beyond OFDM. My work only uses the concept of OFDM and goes deep devising techniques for low power wireless communication. Since you have copyrighted your work, it is courtesy to ask you before using it.

    Please get back to me soon.


  134. keerthi says:

    In page 5, it says “However, there is one requirement a carrier must meet: its frequency must be at least two times the highest frequency in the information signal.”

    Shouldn’t it be Sampling frequency for A/D Conversion and its reconstruction? I think it’s been confused with carrier frequency.

  135. nayan sen says:

    thank you for these intuitive tutorials. These really help to get a clearer picture.

  136. Ahmed Touma says:

    before my question I would to ask you very much for your tutorials , my question is about orthogonality that depends on the fundamental frequency , ex : in page 5 in the tutorial in case of fundamental frequency = .5 Hz , its harmonics are orthogonal to each other , but in case of fundamental frequency = .875 Hz , its harmonics are not orthogonal , why ?

    and thank you again for your effort and waiting for you answer

    Ahmed Touma

    • Charan L. says:

      Harmonics of 0.5 Hz are 1 x .5, 2x.5, 3x.5, … nx.5, all integer multiples.

      .875 is not a harmonics of 0.5 Hz..
      Its its harmoics are all integer multiples of it, or 2x.875, 3x.875 etc.

      Charan Langton

      • Ahmed Touma says:

        yes but my question was that .875 and its harmonics which is 2x.875 , .. etc are not orthogonal to each other

        • Charan L. says:

          fc = .875;
          wc = 2*pi*fc;
          t = 0: .01: 1.1429;
          n = 4;
          m = 7;
          sig = cos(m*wc*t).*cos(n*wc*t)
          %sig = cos(m*wc*t);
          plot(t, sig)
          trapz(t, sig)

          Try this. Not sure why you are saying they are not orthogonal?


          • Ahmed Touma says:

            I said that because I have computed that intergral : cos((7/4)*pei*t)*cos((7/2)*pei*t) interval from 0 to 2*pei and the result was not zero but was .003

  137. Charan L. says:

    That’s because, it is using a trapezoidal approximation for integration. So the answer may not be identically 0.0.


  138. Charan L. says:

    If you solve the equation and do a closed from solution, you should get a zero for cases such as

    cos(nwt) x cos(mwt) ] over a period of 1/w.


    • Ahmed Touma says:

      ok , I will try to understand that idea and thank you so much again for your tutorial because it is simple and very useful .

      Ahmed Touma

  139. Charan Langton says:

    I think it is because of the approximation if you did it in Matlab.
    Decrease the time resolution and see if the number gets smaller. That would be a test.


  140. Ahmed Touma says:

    When the delay spread is less than one symbol why we get flat fading ? , and why we get frequency-selective in case of larger than one symbol ?

  141. Liu says:

    Really appreciate your work, pretty helpful. The most useful material I found on the internet

  142. Ramamurthy says:

    Hello Charan,

    I have referred your tutorial on MAP turbo decoding algorithm, it guides the engineers who implements the algorithm and have not found anywhere such a clear is great work. Request you to update the tutorial on Max-log-Map turbo decoding algorithm also, since it is difficult to represent the data in fixed point for MAP decoding algorithm.

    Best Regards

    • Charan L. says:

      Thanks Ramamurthy.

      I remember, it was a tough one to do.
      I had someone point some errors but have not had time to update.
      Thank you for you comment.

  143. one of the best www-sites.

  144. Oluwole Oyetoke says:

    I have the FFT of my ideal filter impulse response and the FFT of my sampled baseband signal. Wha do i do next, in order to filter? Should i multiply the imaginary parts of the FFTs together and then plot in time domain?

  145. Srikanth says:

    I am little confused over few things. Can you please clarify them:
    1.Do we require pulse shaping in passband transmission (as analog symbols (sinsoids) will be transmitted over channel instead of pulses).
    2.Will ISI occur in a case we are transmitting at higher rates in bandlimited channel but not a multipath. Here if we are doing passband transmission then what will the possible cause for ISI.

    S Srikanth

    • Charan L. says:

      1. pulse shaping occurs only at baseband, before modulation.

      2. ISI can and does occur in all types of channels, AWGN, bandwidth limited, filtered, non-linear, multipath etc.

      • srikanth says:

        Hi Charan,
        Can you please elaborate on your first point. My question is whether passband transmission require pulse shaping or not. I got this doubt because once we modulate(passband) we are sending high frequency sinusoid that represent the symbol and there is no question of transmitting pulses. Please clarify.
        S Srikanth

        • Charan L. says:

          We never transmit pulses (except in some cases). It is a shaped signal, not a sinusoid. It is a sine wave times the shape. That is all what passband means.
          Yes, most definitely passband has pulse shaping. However keep in mind pulse-shaping is just a nomenclature. There are NO pulses anywhere.
          Charan Langton

          • Srikanth says:

            So transmitting pulse times sinewave will result in ISI, where transmitting shaped signal multiplied by sinewave will not result in ISI. Is this statement right.

            S Srikanth

  146. Zeeshan says:

    i am zeeshan and pursuing master in broadcast technology. sir i got confused how a transport stream get divided in transponder bandwidth in DVB-S.

    • Charan L. says:

      Its usually a bit stream and it is demultiplxed, which is a sort of a decimating process. I am not sure of your question, so thats that best I can do.

      Charan Langton

  147. Charan L. says:

    No pulses are transmitted ( except for UWB) in a usual system. We only transit symbols. Each sysmbol in a sinusoid looks like a piece of the sing wave with at a particular stating phase. This is multiplied by a “shape”. This is called the process of pulse shaping. BUT there is no actual pulse.

    This is cal called baseband.

    Now if we multiply this shape by a higher frequency carrier, then it becomes a passband signal because it has now “passed” into a higher frequency region, its frequency from half in the negative region has now passed to all positive and has doubled.

    If you have Matlab, it is best to try this or do it in Excel. A picture is worth a thousand words.

    Charan Langton

  148. Charan L. says:

    No pulses are transmitted ( except for UWB) in a usual system. We only transit symbols. Each sysmbol in a sinusoid that looks like a piece of the sine wave with at a particular starting phase. This is multiplied by a “shape”. This is called the process of pulse shaping. BUT there is no actual pulse.

    This is called baseband.

    Now if we multiply this shape by a higher frequency carrier, then it becomes a passband signal because it has now “passed” into a higher frequency region, its frequency from half in the negative region has now passed to all positive and has doubled.

    If you have Matlab, it is best to try this or do it in Excel. A picture is worth a thousand words.

    Charan Langton

  149. Hello,

    This May, the Institution of Engineering and Technology will release a publication that I feel will be of interest to you entitled Digital Communications: Principles and Systems.

    Digital Communications: Principles and Systems provides a thorough grounding in digital communications using an innovative engineering-first approach to build a nonmathematical overview covering building blocks, signal processing tasks, general features and design considerations. Topics covered include transmission channels, source coding, digital baseband transmission, digital modulation, noise impact in digital transmission, error control coding, advanced signal enhancement techniques for wireless channels and digital transmission link analysis and design.

    The reader is given an insight into the engineering concept and the underlying physical considerations, a clear appreciation of the parameters involved, and an understanding of the interplay of these parameters. The book includes several unpublished original derivations, new insights and alternative approaches that make the understanding of key topics and their application much easier.

    Digital communications: Principles and Systems is an ideal textbook for those who wish to:
    • gain a thorough understanding of the core principles;
    • undertake digital communication systems analysis;
    • design and computer simulations;
    • deal with specialized applications;
    • keep up to date with advances in the technology.
    Topics covered include:
    • overview of digital communication
    • linear channels and systems
    • nonlinear systems
    • sampling of baseband and band-pass signals
    • quantization and PCM
    • source coding and lossless data compression
    • line codes
    • transmission through band-limited AWGN channels
    • transmitted digital signals
    • noise impact in digital transmission
    • error control coding
    • digital transmission link analysis and design
    About the Author:
    Ifiok Otung is a Chartered Engineer with broad and international experience of research and teaching at various universities in Europe and Africa. He has previously worked as a consultant for the UK Electrical and Electronic Engineering Assessment Network and the Engineering Subject Centre of the UK Higher Education Academy. He has authored over 110 publications, and is a regular reviewer of technical articles and textbooks for some of the world’s leading academic publishers. Ifiok Otung is currently Professor of Satellite Communications at the University of Glamorgan, where he teaches MSc courses in Satellite, Mobile and Digital Communications.

  150. A real pleasure to learn.
    Thank you Miss for this site and the share of your knowledge.

  151. Abhishek says:

    Hi, your website has really helped a lot in understanding of digital communication. Tutorial of raised cosine pulse shaping and isi Are explained in much simple and clear form. Thanks a lot for your efforts.

  152. siddu M.Tech(IIT KHARAGPUR) (Ph.D) says:

    really This website is awesome.

  153. geeta gupta says:

    why intereference is minimum in case of orthogonal signals?

  154. geeta gupta says:

    why intereference is minimum in orthogonal signals?

  155. geeta gupta says:

    why intereference is minimum in orthogonal signals?

  156. kaogula says:

    on the bottom of page 11,A should equals sqrt(2/T),not sqrt(1/T)

  157. Oluwole Oyetoke says:

    Hello, pleasse do you have a good write up also on demodulation just like you have on demodulation.

  158. Benny says:

    Thanks for posting this free tutorial… I myself am just getting into the industry, and TWTA’s are something I’ve had difficulty wrapping my head around. Thanks!

  159. geeta gupta says:

    we were taught in class that INTEGRATION(s1(t)*s2(t))over a time period is zero ,then signals are orthogonal and the interference b/w the signals is minimum when this product is zero.Why so??

  160. geeta gupta says:

    Please elaborate the answer more so dat i can understand it more.

  161. Panos Papaioannou says:

    Dear Mrs Langton,

    This is a spontaneous email after one of the can’t remember how many times I have visited your website. The material you provide has helped me incredibly. The way you present all these complex topics is compact and clear at the same time. You are a great teacher and I hope you keep providing us with your wonderful tutorials.

    Best Regards,
    Panos Papaioannou

  162. Dave Kelleher says:

    Charan, simlpy the best explanation of modulation techniques I have come across in my 20 years in Broadcast engineering. Others tend to leave out the realisation of the modulators, however your step by step and diagramtic approach is simply magic.


  163. Shobhit says:

    Can u please help me with constellation diagram 3pie/8 shifted 8-psk. how to calculate average value and minimum value of the envelope

  164. Artak says:

    First sentence at the page 7: “If a voice signal is
    on to a carrier, what is the bandwidth
    of the modulated signal? It is still the

    It is usually not the case unless special methods are applied. E.G the bandwidth of simple AM modulated signal is twice the information bandwidth. Theoretically the FM modulated signal bandwidth is infinite (in practice it can be much wider than the information bandwidth)

  165. Artak says:

    At the end of page 7 : “If we add many periodic signals, with different frequencies and phases, the resulting signal is still periodic”.

    It is not always the case: if we add two sinusoidal signals which frequencies are 1KHz and sqrt(2) kHz then the result is not periodic.

  166. HyeongGeun Park says:

    Thank you very much for your effort.
    And I respect you for releasing on internet

  167. shuceb says:

    can yuo plz help me tutorial about carrier frequeny offset

  168. Moganraj M says:

    Your service is a glowing candle from which i get my light called knowledge.

  169. Mudita Chandra says:

    Respected maam,
    Kindly please elaborate how full branch metrics have been calculated in table 7….when I am using the equation to find them…then they are coming different….I m not able to figure out where I am getting wrong….Please reply as soon as possible….

    Thanks and regards

  170. Ashish says:

    A very basic doubt (Please bear w/ me):
    Pg 2: “The process of gathering the amplitudes in specific levels is called quantization”
    Pg 3: “The processing of quantization of the discrete signal is called the A/D conversion”

    1. Then what’s diff between quantization and A/D conversion?
    i.e. discrete signal is available by sampling process. Then represent each sample using specific levels by quantization process. The o/p of this is a digital signal i.e. which step in this whole process should be called quantization vs A/D conversion?

    • Ashish says:

      I think the “sampling the signal” and then its “quantization” should be A/D conversion. Am I correct?

  171. Nkusi Geoffrey says:

    I’m a younger telecommunications engineer and i’m new on this page and will like to be coorperative in this domain. Thank you

  172. s4spartan says:

    Reading your tutorials are like being reborn in the complex communication world, or having a english translator on visit to Mars…Thanks a lot.

  173. srikanth says:

    Hi Charan. Thanks for the content on OFDM which is very easy to understand. I am half way reading it. At the end of 16th page you have written “In reality, the symbol source is continous, so all we are doing is adjusting the starting phase and making the symbol period longer. But nearly all books talk about it as a copy of the tail end.” Can please explain the above content.
    2. Will the addition of CPrefix, convert frequency selective channel to flat fading as symbol time is increasing?


  174. srikanth says:

    “In reality, the symbol source is continuos, so all we are doing is adjusting the starting phase and making the symbol period longer. But nearly all books talk about it as a copy of the tail end”. In this if you meant of changing the phase of sinsoid as shown in Fig25, our OFDM symbol will not be a simple known signal like sinsoid. In which case we cannot change phase. Please explain


    • Edi Ben says:

      I like your tutorial on this topics. I assume each OFDM applications has to decide on a typical value of the delay spread for the channel. If I have to design an new OFTM system, how do I determine the number of carriers that I can pack on each OFDM symbol ?

  175. Re.y says:

    I’ve read the ofdm pdf . that was great amazing but for continuing i need more …??!
    i download many pdfs but yours was really helpful
    (sorry if i made mistake about writing)

  176. Mudavath Srinivas says:

    Dear madam,
    Its great and best website and was very helpful in communication field. I always look for this website frequently.
    I am doing a project on ‘MIMO-OFDM with Beamforming’.
    The aim of project is : to write a code in matlab and calculate BER rate accordingly and also calculate inter user interference(IUI) if more than 2 users are transmitting at the same time to a base station.

    I am very confused on how to implement OFDM with beamfoming technique.
    It will be a great help and very pleased if i get any related codes/concepts which make me understand and get going.

    Your’s Faithfully,
    IIT Madras

  177. Sunil Rajanna says:

    eye.pdf looks damaged, I could not open. Thanks

  178. KB. Lee says:

    Thank you for your effort

  179. Alonso says:

    I’m lost with you tutorial 27 on page 28 (Example 4) in the begining of page, I dont know how you calculate the figures 1,26 and 9,73 1,875 1,343 for each channel. I need to know it because for distribution the power. I apppreciate so much your help, your tutorial is fantastic. Thank in advance – gonsito @ gmail .com

  180. Damoon Charati says:

    Firstly I really appreciate your great tutorial. According to page 11, last paragraph describing how to encode 1101 using the state diagram, my question is why do we start from the MSB( from left to right)? like you wrote the arrival of 1 and then 0 and then 1 and finally 1?


  181. John Woo says:

    Hi, Charan.
    I am reading your tutorial. I think it is really brilliant work. I am an engineer of satellite communication. Your jobs is instructive.
    In tutorial 24a, you said Ms.Jian Qi’s paper is an excellent reference. Where can I find that paper? Would you mind sending a link?
    Thanks a lot.

    • Charan L. says:

      I did some Goggling and could not find Jian Qi. The link is not where I reference in my paper. This is a big issue with internet references!



  182. RAGHUVEER.D.S says:


  183. Charan L. says:


    Thanks a lot of these nice words. Appreciate it.
    I used to do math in form of verbal quizzes with my kids when they young, mostly because they didn’t like to do worksheets. I tried Kumon with them but it required too much handwriting. So I created these Verbal Math Lesson books a while ago, first for my kids and now for schools. Math is often thought of as a tedious subject by children but if you do it as a game, verbally, I think kids like it and develop a better sense of it. The other math stumbling block in fractions. I also wrote a book on Verbal Fractions which I wish more school would use and adopt. Being able to do fractions in your head gives a child confidence in math for future education.

    Thanks again.

    June, 2014
    Any way.

    • David Morley says:

      Your comments about verbal teaching underscores the importance of talking to our children. When my daughter was young I played Math games with her to teach her to do basic Math in her head. By the time she was in High School she was better at Math than her Teachers. I also read alphabet books to her from the time she was only six months old. She started to recognize words when she was a little over a year old and could read before she was four.

      • Charan L. says:

        Thank you David.
        I wish more parents would do that with their children. Early math is really more of a game and ought to be taught that way. The worksheets kind of put dread in the whole business, as kids are not yet good with their handwriting.

  184. Glenn Keller says:

    Could you kindly clarify a point in the MIMO tutorial with regards to 27.1 which expresses SNR in dB? My understanding of the Shannon theorem is that SNR is expressed as a dimensionless power ratio, but not in dB. Would not the Capacity in 27.1 equate to 2 b/s/hz?

    • Glenn Keller says:

      My mistake – apologies. You have the calculations correct. What threw me off was that 10log10(10) = 10. I thought that you were using the SNR in dB in the equation but you convert the dBs back to a power ratio before calculating C. Sorry…

  185. OFDMUser says:

    Thank you very much.For IEEE 802.11 a The standard uses 64 IFFT length (3.2μs) and 20 Msamples per second This result in 64 samples in time domain can i get more samples increasing the sampling frequency ?
    in other words, how the sampling frequency affect the structure ?

  186. Richard Buckley says:

    Hello Charan,

    I actually had the pleasure and good fortune to work with Richard Tervo in the late 80s early 90s. I can attest that he is as clear, concise and helpful in person as you describe his book. Thank you for the tip, I will have to put this on my must read list.

  187. amir says:

    Love your website , you should become teacher/professor

  188. mahdi says:

    Thanks a lot!
    I found it fantastic.

  189. Thanh Nguyen Tang says:

    Thank you, professor Charan 🙂 I think I just know who I want to be 🙂

  190. Mr. Rajesh Sanghvi says:

    I am a lecturer of Mathematics at an engineering college in India. I heartily thank you for posting such nice tutorials. It is really difficult to develop an insight on Fourier series, DFT, FFT etc. I found this tutorials very helpful in this way. Books do not explain such things. I appreciate your kind action. I hope in future also you will help us by uploading good material on topics you are familiar with.

  191. Troy says:

    Why does the sum of two sine waves f1 and f2 have spectral energy in its frequency domain precicely centered at f1 and f2, rather than the (f1+f2)/2 average. Something I’m still struggling to understand.

  192. Troy says:

    The 205 hz frequency depicted in your example does not exist. 205 hz is in fact the average frequency of the signal. But 205 hz is not the frequency of the signal itself, nor does there exist any energy at 205 hz. Maybe you didn’t intend to suggest that the underlying summed dignal was actually at the average of f1, and f2, but rather that it had an average freqnecy of (f1+f2)/2?

  193. Anirudha Kulkarni says:

    First of all I must say that, all the chapters written on this website is a great resource.
    Many thnaks for expaling digital communication in such a simple way.

    I was going through Inter Symbol Interference and Root Raised Cosine Filter chapter.

    I have one doubt in the example of satellite transponder on page 11.
    Probably I am missing something here to understand it.

    The doubt is,

    When we use QPSK ( or any PSK ) , we use the sine and cosine waveforms to send the signal which is already in bit stream form.

    The bit stream form is has square shape pulses.

    But QPSK modulated signal will have portion sine and cosine waveforms.

    So the question is why do you say that the “unshaped” QPSK is square pulsed.
    Pardon me if I am not able to understand the context of “unshaped”.

    In any case, if a signal is digitally modullated then the bits would be sent in the form of sine and cosine only.

    So why do you say that pulse shaping is required on the square pulse before sending.


  194. Muhammad Altaf says:

    Firstly i want to thank you for putting together such good tutorials. I am doing my masters in Communications and Signal Processing. This forum has helped me a lot since the commencement of my degree. I have a request if you can take out some time to prepare a tutorial on FBMC (Filter Bank Multi Carrier) modulation scheme. Currently, I am about to start a project on this topic but can not find a specific and to the point tutorial on this topic. Your effort would be really appreciated.
    Thank You

  195. Nguyen Le Hung says:

    Dear Charan Langton,
    I’m a beginner in Electrical Engineering. Could you please recommend me some books or reference websites which give instruction on how to simulate theories in DSP and basic systems of Digital Communication / Wireless Communication by using Matlab and Simmulink ?
    – Explanation
    – Algorithms
    – Sample codes
    Thank you and BR

  196. omar says:

    its understanding to good

  197. Arthur Dent says:

    This was a fun read — thanks for posting it. On Richard’s advice I’m going to write a book on signal processing with massive amounts of the other topics mentioned 🙂

    • Luis Sanchez says:

      How can you mix DSP and the other topics? ha ha ha.

      On a more serious note, Mr. Richard, congrats! I find your book very good! You explain the topics very well. It definitely honors the title.

  198. Subodh says:

    Hi Charan,

    The information on Fourier analysis was really awesome. Big Fan !!!!

  199. Great website! Loved the explanations, your notes, wonderful resource for teaching. (I have been invited as a guest lecturer at COEP, your notes are helping me a lot! 🙂 )

  200. VK says:


    Thanks for such beautiful and amazing notes. They really made my mind to jump from complex to understandable fundamentals.

  201. Farshid says:

    Thank you so much for the great website and your effort. After so many searches in the internet finally found the website with amazing understandable tutorials.

  202. Vinayak Mhase says:

    Thanks! Very good tutorial

  203. RAJ K N says:

    Hi, glad i found this website.

    just reading how dft is borned from womb of fourier series…

    but still confusing and many questions are arised fOr me while reading,


    I WILL NOT ASK YOU UNTILL I GET DEFEAT WITH THESE CONCEPTS( means iput my 100% first and then i will ask you admin)

    (from: india)

  204. VIKAS SWARNKAR says:

    Mam, I am a big fan of your writing on all the technical topic related to telecommunication, can you please write something on beamforming moreover adaptive beamforming

  205. Royal says:

    Hi there,
    Thanks a lot for your easy to understand tutorial.

  206. vv says:

    Hi Charan,Thanks you for such an intuitive explanation.
    I am having hardtime understanding Baseband signal bandwidth. Say I am using raised cosine pulses for transmitting signals, how do you define the Bandwidth of this raised cosine pulse? If you say this has bandwidth “B”, does it mean that for generating a raised cosine pulse,we need complex sinusoids of different frequencies from 0 to B ?

  207. Bharat Goyal says:

    Thanks for the tutorial….How to make trellis diagram for 2/3 or 3/4 etc convolution encoder…
    i.e. how to make trellis diagram when input bit is more than one…as this is used in TCM

  208. vv says:

    Hi Charan,
    When we say LTE supports bandwith of 20 Mhz, doeas it mean we support upto 20 Msps?

  209. Tsegaye Y says:

    Your tutorials make the concepts understandable, Thanks a lot!!!

  210. sridhar says:

    Fantastic and very useful. May God bless the originatar/(and consequent forwarders) for this remarkable service.

  211. Arash says:

    Thanks for your great tutorial. I jusy have one question. I want to implement baseband FM with output of I and Q. How can I do this? I want to implement Stereo FM transmitter. If I use FSK, Do the analog receivers able to demod it?

    Best Regards,

    • Charan L. says:

      FSK is a digital modulation. Not sure what you mean by analog receiver.
      If the receiver is setup for FSK then I don’t see any problem getting out the I and Q channels.

      • Arash says:

        Hi. Thanks for reply. I mean I want to design digital stereo FM for broadcasting. Analog receiver I mean radio of the car which I know they are are not support FSK. So if I want to implement conventional FM with I and Q output what can I do? If you know any references please let me know.

  212. Madam,

    i am very much impressed with your writing style, and also the content.

    A small request is to verify the URL links given above, as few of them are dead.


  213. Anirudh Palle says:

    Hi. I was going through the first part of modulation tutorial. The Offset QPSK section has an inaccuracy in the I and Q channel diagrams. The Q channel is supposed to be offset by half a symbol time i.e. one bit time. But the figure shows the offset of half a bit time. Please correct me if I am wrong else correct the figure 🙂

    Thanks and regards

  214. John Dusatko says:

    Thanks so much for this website and your extremely lucid explanations! I wish that I had access to this information while I was attending university. I have especially appreciated your writeups on the Fourier transform. You have taken a difficult subject and presented in a way that is easy to understand. I was wondering when your book, “Intuitive Guide to Fourier Analysis” will be published as I (and I’m sure many others) would like to obtain a copy.

    Best Regards

    • Charan L. says:

      Thank you John for your nice comments.

      If you are willing to read my chapters as I am doing them, I would be most grateful.
      Please let me know.

      Thanks again,

      Charan Langton

      • John Dusatko says:


        I’m sorry to not get back to you sooner. I got busy with work and life, had not visited your website in a while and had erroneously thought that it would auto-send email if comments are posted.

        To answer your original question — yes, I would consider it an honor to read the chapters as you are writing them. I cannot claim to be any sort of expert here, but if having another set of eyes going over the manuscript would be helpful, I gladly offer myself to your efforts.

        Best Regards,


  215. paul says:

    Great for Engineers

  216. Alex Bueno says:

    Great tutorials

  217. idmond says:

    In case anyone is looking for the practical side of ISI, I’ve came across this great tutorial which discusses the implementation of pulse shaping to reduce the bandwidth and avoid ISI in modems of amateur radio satellites:


  218. Shahriar Parvez says:

    Hello Ms. Charan! Your tutorials have helped much more than entire semesters of wireless comm classes combined. Please keep up the good work.
    Will you be posting any tutorials on wireless channel modeling and MIMO-OFDM? It would be very beneficial as channel modelling is a common but challenging topic and MIMO-OFDM is the technology of choice, but the mathematics and concepts may be difficult to grasp at first hand. Please let me know

  219. Elvin says:

    need a written program on free space optical link for channel interference reduction

  220. NITIN SAHU says:

    Respected Madam,

    I am an scholar from an institute in india.
    HATS OFF to your exceptionally good tutorials.

    Your tutorial speaks everything.

  221. james says:

    Shouldnt phase on page 6 be tan-1(Q/I) and not I/Q

  222. Charlie says:

    Great to be here! I learn a lot! Thank you very much!

  223. Charlie says:

    1. pulse shaping occurs only at baseband, before modulation.

    I think you are wrong. If you have time, please look at one article from ni white papers. The link is below

    • Charan L. says:

      I looked at the article and it does not contradict what I said. The pulse shaping acts to reduce the bandwidth of the baseband signal, hence it can also act like a filter.
      It is always done before modulation.

      Charan Langton

  224. Paul Zwicker says:

    In section 4, where the FSL is written in dB form – the unit specific nature of the constant should be stated. This form is requires r to be in km and f to be in MHz. Especially since the example then uses the constant in the r[km] and f[GHz]. It just makes the material confusing for a second because of the inconsistency, but thank you for this material it has been a great refresher.

  225. Ashwin Amanna says:

    On the top of page 7 there is a formula for the Phase of the signal given as “Phase of signal =arctan(I/Q). I believe it should be phase of signal = arctan (Q/I) given the way you defined the scenario with the y-axis being Q and the x-axis being I.


  226. Rishi says:

    On page 2: “a digital signal can take any number of values, usually in powers of two”. Can you give a real world example where a digital signal takes values other than the usual binary values ?

  227. srikanth says:

    Unable to download or open few pdf’s (fft transforms). Please help

  228. srikanth says:

    Hi…few pdf are not accessible (ffts). Please help

    • Charan L. says:

      Which ones are missing? Occasionally I notice that some don’t show up some times and then reappear at a later time. Internet Magic!

  229. M Masroor Akram says:

    Dear Madam,

    I would like to thank you for exceptionally good tutorials. I have learnt a lot from these. I have been a visitor to your web-site since long. I like the new “Books” sections.

    These days I have been looking for a good “text” like book (I mean a detailed book) on Geo-location techniques with regards to Satellite communications but could not find it yet. I would appreciate if you can help me on this.

    Thanking you in anticipation.

    M Masroor Akram

  230. Thank you for all the tutorials. It has helped many people.

  231. Ray says:

    In your tutorial number 7 on the Hilbert Transform, under the heading “What is the analytic signal of a sine?” I think there is a small error in the reduction of sin(wt) – jcos(wt) into a complex exponential which should be -je^{jwt}.

    On the whole, the couple paragraphs below it make it seem like all complex exponentials have a spectrum only in the positive domain which is slightly confusing. For instance, e^{-jwt} does not. A proof that the hilbert transform results in positive frequency would be great.

    Thank you very much for these tutorials. I’ve only gone over the hilbert one and the intuition and simplistic walk-through with the example really helped me understand the basic concept.

  232. George Maher says:

    Dear Ms. Langton,
    Thank you for writing your tutorials. I have taken a lot of advanced EE classes years ago but sometimes had nagging questions about basic things and they were usually covered in a very clear way in your tutorials – which I discovered later. You address complex (obvious pun) concepts in a very approachable way that is similar to how I try to understand new concepts at first. Your tutorials have helped me immensely.


    • Charan L. says:

      Dear George,

      Thank you very much for your nice comments.
      I am so glad you liked the name of the site.
      It is cute.

      I am working on a book right now, which is why I have not posted for a while.

      Thanks again for your comments,

      Charan Langton

  233. Tarik says:

    Nice website, thank you 🙂

  234. Dawoud Khalifa says:

    Thanks for your well explained tutorials.
    I would really appreciate it if you update the PDF file so I can use annotation tools in it, since I like to mark and add notes here and there in the file so I can find them later.
    That would be of a great help to me.

  235. Vasudeva Murthy Vadlakonda says:

    No other author has explained the coding and decoding theory with so much of clarity. One small clarification. The tree diagram on Page:13; 11(100)up 11(011) up 01(010) may have to be corrected as 11(100)up 11(010) up 01(001). Regret if I am giving a wrong suggestion.

    • Charan L. says:

      Yes, you are correct. Need to go back and fix it. I am busy trying get my book out so it might be while.
      Thank you very much for you comments, however.

    • Moditha says:

      How can we have input bit of one (1) , when u actually input zero (0) – this document is riddled with errors

      • Charan L. says:

        I can see your frustration, however this document was done a long time ago. I no longer have the files to change it.
        I have marked the figure where the bits should be changed. Hope that helps.

  236. Subramanya Krishna says:

    Dear Ms Charan,
    Great tutorial. While it enlightened me immensely with the understanding of cyclic prefix resolving the inter symbol interference caused by the delay spread of multi path reflections, I was wrestling with the question about how the intra symbol interference that causes the amplitude and phase shift in the signal is taken care of? I came across brief literature in the web about reference signals or pilot carriers used to resolve this. Addition of that discussion to the tutorial will greatly help.

  237. Precious piece of human and technology history.
    I live few kilometers from Villa Grifone, located in Sasso Marconi -Bologna (Italy).
    Here, in the house of Guglielmo Marconi, was born the Wireless Communication.
    I am fascinated by history of these technologies and persons.
    Thanks again

  238. Bai says:

    May I know how do we compute the ideal constellation points for QPSK (0.707, 0.707, 0.707, -0.707, -0.707, -0.707, -0.707, 0.707) and 8PSK ? Is there any formula ?

    • Charan L. says:

      The numbers are pairs of coordinates. Plot these and you get the constellation of four points.(you have 8 points, each a (x,y) pair. Note that they all fall on a circle of radius .707. To plot 8PSK, you need 8 equidistant points 45 degrees apart. This is easy to calculate. They all fall on a circle of radius .707 ( squaring it you get 1.0, which is the power.)

  239. launcher says:


    I am a Chinese student major in Electronic Technology. Firstly I want to express my gratitude for you effort to write a good book–Intuitive Guide to Fourier Analysis, I had read two chapters,and also I think I had found some little clerical mistakes in the book,I attempt to contact you in the Facebook,but got none response,could you give me a email, I will sent you about them.
    And I want to know that what software you used to draw the picture like e^jwt ?
    Thanks a lot again! You are a good teacher for me.

  240. Mete says:


    At page 10, unlike in sines case, the sum of cosines (1/k)*cos(k*2*pi*f*t) for k = 1, 3, 5 ect. does not make a square wave when I plot in MATLAB. It is kind of counter intuitive but you can try and see:

    t = 0:01;1;
    plot(t, (1/1)*sin(1*2*pi*f*t) + (1/3)*sin(3*2*pi*f*t) + (1/5)*sin(5*2*pi*f*t) + (1/7)*sin(7*2*pi*f*t));
    hold on;
    plot(t, (1/1)*cos(1*2*pi*f*t) + (1/3)*cos(3*2*pi*f*t) + (1/5)*cos(5*2*pi*f*t) + (1/7)*cos(7*2*pi*f*t),’-r’);

  241. Mete says:

    I think in cosine case there will be 1, -1/3, 1/5, -1/7:

    t = 0:0.01:1;
    plot(t, (1/1)*sin(1*2*pi*f*t) + (1/3)*sin(3*2*pi*f*t) + (1/5)*sin(5*2*pi*f*t) + (1/7)*sin(7*2*pi*f*t));
    hold on;
    plot(t, (1/1)*cos(1*2*pi*f*t) + (-1/3)*cos(3*2*pi*f*t) + (1/5)*cos(5*2*pi*f*t) + (-1/7)*cos(7*2*pi*f*t),’-r’);

  242. Saroj Prasad Chhatoi says:

    I really loved the contents on provided by you. I am planning to design a communication payload system for c-band for which i did the eirp calculation considering the ber of 10^-5 and noise temperature to be only 293k. Mam how should I proceed to get the specification of various components

  243. george says:

    Your tutorials are exellent regarding the explanation but there are so many mistakes with the math. You need to go through them as it can be confusing when equations make no sense! however i still value your work. if you correct this then it is perfect.

    • Charan L. says:

      Any specific page/tutorial?

      I keep wanting to update them but in some cases, I can’t not find my original files.
      Maybe I will have to rewrite them.

      Thank you so much for your kind words.


      • george says:

        i think the discrete time signals and fourier series representation has the most mistakes in it. for example bottom of page 42 should be pi/2 not pi/4. page 43 should be c(0), c(1), c(2), c(3).page 44 the 1/N terms have been omitted in the c(k) calculations… there are a lot more. also you often draw the 3D sine wave representation as having a +90 degree phase for the positive freq and -90 for the neg freq but i think it is the other way round. see page 2 or your hilbert transform tutorial (which is very good). you do state that the cosine into sine tranformation requires a -90 shift for pos freq and -90 for neg freq which is correct and contradicts the previous statement and diagram. however your axes are not labelled regarding the directions of positive and negative so you may be correct in your pictures however if you are using less conventional axes directions it would be good if they were labelled. i think I am correct in most of this. best wishes

  244. Maxim says:

    Great Site, thank you!

  245. Sandeep Mukherjee says:

    Great tutorial. I just have one doubt, On page 18 (equation 27.28) you are writing R_xx = P_T I_3 (where I_3 is a 3X3 identity matrix) and P_T is the “Total Power of the system”. Since, each diagonal element of R_xx contains the power transmitted by each transmitting antenna, in this case, the total transmitted power becomes: P_T + P_T + P_T = 3P_T. So shouldn’t the equation read R_xx = (P_T/3) I_3 if we want to make the total transmitted power to be P_t? Similarly, in the case were the powers are in the ratio 1:2:3, the covariance matrix should be R_xx = (P_T/6)*[1 0 0; 0 2 0; 0 0 3]? Thanks in advance.

  246. Basant says:


    Firstly thank you for the wonderful explanation/work.
    Just have a comment, I think in Chapter 12, Fig 10a, the outbit must be 11110111010111, instead of 11011111010111.


  247. james says:

    Dear Ms Langton,

    Could you recommend the best source for understanding digital baseband concepts – expected value/power desity/autocorrelation?

    I am struggling very hard with these topics. i have not studied statistics before and all texts often do not even explain the notation.

    I would love something that has at least one example fully explained. ideally with pictures. Any book suggestions?

  248. Zonghao Li says:

    Hello Charan,

    First of all thank you for your efforts in building up such a good platform for people who are interested in DSP and other related fields to communicate and study. I just started touching DSP for like 3 months and I take a look at one of your tutorials that is called ‘Fourier Transform of continuous and discrete signals’, and it really does help. It clarifies lots of conceptional questions that confused me for quite a long time, and even my prof cannot clearly answer some of those. I haven’t finish reading that tutorial, and so far I have a question regarding the FT of the Periodic signal. As you mentioned in that tutorial, even though historically initially we use FT for aperiodic signals, but it is also applicable for periodic signals, and the result will be the discrete replicas of the FT of the original time domain function. I also heard about the Poisson Summation, and in fact they look quite similar, so I am wondering if there is any potential relationship in between?

    Another example is when you take the FT of an sin function, which means you are taking the FT of a periodic function, but we usually will do the truncation and will only take the FT within one period, which will yields two impulses at two side of the frequency domain. And if I choose to consider the whole frequency domain instead of within one period, then the finally frequency spectrum will be the replicas of the impulse, is that a right inference? Is that the reason why we usually choose to do FT of periodic signals within one period? Thank you.



    • Charan L. says:

      The CTFT and the DTFT of a sine wave is just two impulses at the frequency of the signal. When you do the DFT, if the length of the DFT is not equal to the integer multiple of the period length (in samples) then, you will see other components. I am not sure about your Poisson comment. I will have to look into that.

      There is no repeating of the impulses for the sine for periodic or a single basic case. I may not have explained this well in the tutorial. I will be posting a new one.


      • Zonghao Li says:

        Really appreciate for your replay and I am looking forward to your further tutorials. If you have some ideas regarding the Poisson Summation, please leave me comments. Thank you.


  249. Felipe dos Anjos says:

    Muito bom! Obrigado pela ajudar!
    Very good!Thank you!

  250. Rok says:

    Your notes made my life easy. I have no words to express my gratitude.
    Thanks Sir

  251. Michael Soyka says:

    At first glance, this tutorial seemed promising but as I looked more closely, several issues arose.

    1. The phase detector gain, defined on page 1, is sometimes designated as K-sub-m, sometimes as K-sub-d, sometimes as k-sub-d, sometimes as k-sub-m (see pages 1,2,5,9).
    2. Sometimes omega is used to designate angular frequency, sometimes “w” (page 2).
    3. On page 5, paragraph below Fig 7, you state “… 90 phase difference which is required to make this whole thing work”. If this true, you should also tell the reader why it would fail.
    4. I don’t see the point of Figs 8-13 and feel they may introduce confusion. I say this because they show possible error signals that converge to non-zero values. In a properly operating PLL, errors should instead approach zero, as you state on page 7.
    5. On page 8, the top 3 equations used different subscripts on omega: “i”, “c”, and “out”. If s-sub-2() is the output of the VCO, shouldn’t that omega be omega-sub-out? Also, in the expression for omega-sub-out, shouldn’t omega-sub-i be the input?
    6. On page 8, you state the K-sub-0 has units of Hz per volt however you defined it in terms of omega which has units of radians per volt.
    7. On the page, the equality at the top of the page makes no sense- I assume phi-of-t was meant.
    8. On page 9, the expression for phi-sub-2 comes out of nowhere. You do not explain why you can replace frequency with s-sub-e, something you said earlier is not frequency dependent.

    Page 9 is as far as I got in the tutorial. I still think this could be useful if the details get cleaned-up and the organization improved.

  252. Abinash Kumar says:

    Thanks a lot.Could you please share some of the your strategy to simplify the difficult and confusing concept like Fourier transform.It would be really helpful for us.

  253. arun says:

    Hi charan,

    In the figure 11 :page 8 , you have mentioned that the required low pass bandwidth is one-half of symbol rate.
    So in the figure, for s1= symbol time = 0.5+0.5 =1 second , therefore symbol rate is also 1 symbol/sec.

    But as per the author Bernard Sklar ” Digital communications .Fundamentals and applications ” 2nd edition page 137 : Figure 3.16,

    when the Total symbol time of Sinc pulse is 2T ( see .Fig=3.16 b),
    then the single sided Bandwidth( the ideal Nyquist filter ) is = 1/2T = 1 /( 2*0.5) = 1 Hz.see fig 3.16 a

    So here the Bandwidth = 1hz and symbol rate is also 1 symbol per second..

    How did you get 0.5 as the single sided bandwidth for S1 ( the red rectangle ) in your Figure-11

    Am I missing some thing here.please correct.


  254. Keith Clark says:

    I agree with Paul. On page 15 the equation for free space loss is only correct if “r” is measured in km and “f” is defined in MHz. If base units are used, “r” in metres and “f” in Hertz, then the constant is -147.56. This becomes a problem in Ex. 6. Firstly the height of the satellite is not defined in the question but assumed to be 22,000km as was used in Ex. 3. If a constant of -92.4 is used this means that “r” is defined in km and “f” in GHz. The penultimate line in Ex. 6 shows 20 Log (12×10^9), this is wrong as the units are in GHz so that line should simply read 20 Log (12). Doing the numbers correctly gives FSL = 200.6 dB not 196 dB.

    Finally, Preceived = 60dBW + 52 – FSL dBW

    If FSL = 196 dB (as shown in the example) then
    Preceived = 60dBW + 52 – 196 dBW
    Hence, Preceived = -84 dBW not -80 dBW as shown but this is using the wrong figures, FSL should be 200.6 dB not 196 dB

    Therefore Preceived = 60dBW + 52 – 200.6 dBW
    Preceived = -88.6 dBW

    Having said all that, the tutorials are very helpful and not at all daunting making them very helpful. Hopefully you take my comments in the constructive way they were intended! 🙂

  255. Oliver Street says:

    1) When analyzing noise the analog bandwidth and bit rate aren’t 1:1 equivalent, there are 2 bps/Hz, not 1bps/Hz. If anyone clings to the appeal of 1:1 show a 1Hz square wave is a 2bps alternating +/- binary sequence, and then show a 1Hz sine wave (claim the same RMS power without visually re-scaling) and integrate the energy over the half cycle bit interval to get an unambiguously equivalent +/- result.

    2) The section on the BER and bandwidth of n-ary PSK is weak. Its simpler begin by showing QPSK as the sum of two BPSK signals created from a quadrature (90°, sine/cosine) offset copies of the carrier, where each has 1/2 the carrier power. (Its a simple way to make a QPSK modulator.) The relative bit energy for each of the two BPSK streams is more obviously -3.02dB. Since any n-ary PSK signal can be formed the same way, the bit enerygy relative to BPSK is 2/n or 10log10(2/n) dB. (Try to avoid describing the QPSK components as orthogonal for this purpose, it’s irrelevant when the analysis is extended to n-PPSK)

    3) The section on coding gain falls into the same trap that many other do. The coding gain isn’t corrected for the coded channel bandwidth. This remains valid when, like the original applications for channel these codes, lowering the uncoded bit rate doesn’t produce a proportional increase in Eb/No because of the noise spectrum isn’t flat because of 1/f (and 1/f^2) noise.

    Here’s a tutorial on coding gain that doesn’t fall into the bandwith trap

    4) The paragraph beginning with 10^-2 BER has some problems. It falls into the bandwidth coding gain trap, but it should recognize that its describing a link design constained by choices already made. Satellite channel bandwidth and downlink power budgets are typically designed for 10^-11 BER typical, 10^-6 minimum at full bandwidth including coding gain with a 50% rate reduction due to coding, and the raw channel BER is 10^-2 at the unencoded bitrate, and 10^-3 at the coded bit rate. A ground station designer can add antenna gain and transmit power, but the market has expectations based on coded channels.

    5) Transponder links built on 10’s of MHz wide bent pipe TWT amplifier channels have been a staple of commercial geosynchronous SATCOM links. The detailed gain curve only applies to a particular transponder type. They aren’t representative of communication systems in general. Mentioning that transponder links often have a nonlinear gain curve and may both squelch weak signals and have significant AM suppression is enough to suggest that an analysis has to include the characteristics of components of the link.

    6) It isn’t inappropriate for an introductory analysis to avoid the more complex topics like carrier phase noise, bit clock jitter, the effect of shaped modulation on bandwidth occupancy, and so on, but it might be appropriate to mention that these things exist and are required for a complete link budget.

  256. ALam says:

    Very well explained. Thanks
    Any tutorial on *Multidimensional Constellations* ? please upload.

  257. Dear Sir/Madam,

    i referred your material tited “Linear Time invarienr (LTI) systems and Matched filter” which is available at It is very useful for my lecture and building some applications related to the radar signal processing. Thanks for it.
    I would like to have some materials related to “Ambiguity Diagram” where i required clear description like the above mentioned topic.

    Please sir….

  258. GTB says:

    Thanks alot for your effort and contributions. These tutorial are really helpful.

  259. David Binner says:

    Hi, Charan.

    Nice website! I came across it when looking for resources relevant to the Discrete Fourier Transform (DFT). I often look around to see what information is available; it helps with my own work. Reading material from a wide range of perspectives usually helps me understand concept better.

    I’d also like to share some of my work that may be relevant to your website: last year (2015), I posted a JavaScript translation of a DFT from the FFTPACK library:

    Discrete Fourier Transform:

    It is simple to use and I hope you find it useful.

  260. Francis says:

    Differential phase shifting… does it include polarity correction process as opposed to polarity prevention coding?

  261. Siddhesh Shinde says:

    Thank you so much for such a wonderful collection. It has helped me a lot.

  262. tmt says:

    Ms Langton, I am grateful for having the opportunity to amble my way through this large resource of useful information on Signals and systems. It is something that I have often struggled with in my work on occasion, and I am not a natural mathematician. There was just the section on Laplace, Z- and discrete transforms that completely lost me in your Signals.pdf. I wondered if you could re-work it again perhaps from a different perspective, and with more information on those sections to make the knowledge ‘full’?
    I have looked at some enquiries made about typos and oversights in your work, do you provide news of updates to your tutorials on your site? It is not clear whether these things have been corrected, as I do not see replies to enquiries that mention whether you have corrected them or not.

  263. Shahab says:

    Hi Charan,

    Your tutorials are beautifully written. I wanted to thank you for your very well written material. I would appreciate if you specifically introduce me with a well written book in digital communications. I have Digital Communications written by Proakis but unfortunately it is not rigorous enough. It has a lot of content but most of them without any proof.

    I am looking for a book that is very well teaches the concept intuitively, proves mathematically in a well understandable manner or it gives enough information that I can research the rigorous proofs myself.

    I am an engineer with almost 20 years of experience in the field of DSP so I am not completely unfamiliar with the subject.

    Thanks for your recommendation


  264. kaogula says:

    Is “analog medium” means the “carrier” is analog ? Since a wire can carry both analog signal and digital signal, it will be called “analog medium” when it’s carrying analog signal. Am I right?

    • Charan L. says:

      Analog just means continuous but in practice an analog signal is one based on a sinusoidal wave form source. This implies that information has been modulated onto a sinusoidal carrier, somehow (AM, FM, PSK, etc.). Hence the term analog almost always applies to this type of signal. This type of modulated signal can travel through many types of physical channels, also called medium, including wire, water or air.
      Charan Langton

      • kaogula says:

        Thanks for your reply. I was just little confused about these words in this tutorial: “Communications inside a computer are examples of pure digital communications, digital data over digital medium. LAN communications are digital data over analog medium.”
        The “physical channel”, also called medium,shouldn’t be distinguished into digital medium and analog medium.

        I think in this context, “digital data over digital medium” is talking about the ” digital baseband transmission” or “digital information transmissino”,and there is no carrier; and “digital data over analog medium” is talking about “digital information over digital carrier”

  265. Yes, that does sound confusing. Digital data is almost always sans a carrier, that is, it is at baseband and represented just by a voltage polarity of a fixed amplitude, i.e. +1V or -1V. All physical mediums are capable of transmitting such data, however not efficiently. The “wires” inside a chip do carry this digital data but because of the small distances and the property of the material, they can do do so without much distortion and loss. The actual wire such as an Ethernet cable however has a poorer frequency response and it would distort such digital signals.
    Charan Langton

  266. Alina says:

    I have this question
    Theoretically, could the bandwith for WCDMA be lower than 3.8Mhz, say 1.9 for instance?
    In Lte the minimum I have seen is 1.4

    Thank you,

    • Charan L. says:

      The bandwidth allocated and bandwidth possible can be two different things. The bandwidth (baseband) required is only a function of the the modulation order and symbol rate.

      One always starts with the data rate required. Lets says that the minimum date rate needed for voice is 9.6 Kbps (for a give BER). Assume modulation is QPSK (as in CDMA), then bandwidth is equal to 2 times the symbol rate. Actually the bit rate for voice cna be as alo as 1.024 Kbs, in which case, the badwidth required would be only two times that.

      Not sure if this was your question. In LTE the channels can provide compressed video as well. So it all depends on the service parameters.


  267. JJ says:

    Hello Mam,

    Ihaverety started following your tutorials, you seem to have a great in depth knowledge subject specially in regard to practical aspects of it.
    I have benn reading many on same however there approach is very therotical.
    Iam obliged to be taught by the the masters in the field.
    looking forward for your book soon and specially for Indians.
    Thanks Once again.

  268. Cai Hengbin says:

    Dear Madam,
    Thanks a lot for your excellent explanation about the Hilbert Transform (HT) in communicatoin systems!
    Here, after reading your paper, I have a question and hope to discuss it with you.
    cos(wt) -> sin(wt) -> -cos(wt) -> -sin(wt) -> cos(wt) -> …
    holds in HT, you obtain your result as
    However, in my opinion,
    Because only in this case can we have cos(2-100)t+jsin(100-2)t=exp(j(100-2)t), attaining that the positive domain is left. Otherwise,g+(t)=2cos(2+100)t+…+j3cos(3-100)t cannot be rewritten as g+(t)=(4cos2t-6sin3t)exp(j100t).

  269. Stephen says:


    I would just like to point out a typo on page 5 towards the end of the page.

    In LaTeX you used \textbf{} but forgot the {}.

    Thanks for the awesome notes. Im really enjoying them!

    Will let you know if there are any more ‘issues’ 🙂


    • Stephen says:

      There is another typo on page 7 just below the equations where you mention that c(t) has an amplitude of A. It should be c(t) has an amplitude of B if we go by the equations. 🙂


    • Stephen says:

      Another one on page 9 where you say that w=2*pi*k*f but you have already included k in the equation so it would imply it becomes k^2.

    • Stephen says:

      Page 11 reads:
      “With only three terms in the addition result in a pretty decent looking square wave.”

      I think it should read:
      “With only three terms in, the addition result is a pretty decent looking square wave.”

      I know I am being petty but I am really grateful for the work done and want to improve it if I can.

      All the best,

    • Stephen says:

      There are a few more errors that I have found that I would like to send through to you for correcting. Would it be possible if I can do that in another way rather than through comments?


  270. mick says:

    very short and impressive note. Thank you!

  271. Orlando Banos-Rivas says:

    Reading your tutorials is a real treat however Tut 21 Figs 4 and 5.a thru 5.c are missing 🙁

  272. tLin says:

    Hi Charan
    I am looking for a Simulink model for wireless receiver for education purpose. Bumped into this one,, at but it doesn’t work. Do you have one handy?

    Also I think is a good site for ECE research and design. It is new but I like its idea to encourage engineers to share knowledge. I guess you can add it to your list so others can also benefit.


  273. Simmi says:

    i read your tutorial.. these are unbelievably good… thanks…. specially the convolutional encoder and decoder… i find this to be so interesting that i suggested each and every friend of mine…. Thanks once again…

    I want to improve BER by using convolutional encoding… can you suggest me some idea to decode it better or making some new code…

  274. Mahesh Budavarapu says:

    Thank you very much Charan. This site is really helpful for understanding Digital Communications.
    I had gone through Turbo Coding and Decoding. It really helped me alot in getting a big picture of Turbo Codes.
    Thank you once again for explaining the concepts and on creating such a wonderful website for wireless Communications. Eagerly waiting for your explanations/teachings on contemporary wireless communication topics.

  275. David Morley says:

    Hi Charan,
    I just read your tutorial on OFDM and I wanted to let you know how great it is. It is a rare ability to take very complicated subjects and explain them is easy to understand terms. I look forward to reading more of your tutorial and your book when it is published.

  276. michelangelo says:

    I am grateful to you for all tutorials that I advise always to my colleagues.
    It is art of disclosure, also my passion.
    A question: I find few literature related to Costas Loop;
    I did some tests circuits FPGA based, do you know tutorial or application notes
    for better knowledge?
    Thanks in advance

  277. M. Hashemi says:

    Thanks a lot, i want to know on synchronization in communication (concept,basics and foundamentals) and i would appreciate if you help me.

  278. MimS says:

    Dear Rick;

    I would like to thank you for your book and let you know that anything I understand in DSP, come from your book “Understanding DSP”,
    really appreciate!!!.
    From IRAN

  279. mathematicallyilliterate says:

    Charan your work here is truly incredible. I have a very poor understanding of mathematics and one of my units on the second year of my undergraduate computing degree is based around wireless communications. The resources you have provided here have helped me to make more sense of the subject than any of the resources/lectures given by my university.

    It’s still a subject I’m struggling to grasp, but the information contained on your site has really helped!

    Thanks again!

  280. Divakaran says:

    Hi Charan Langton and Victor Levin
    Read the sample chapter and it is a great book.
    I will wait for the print version to be published will it be in colour or black and white.


  281. Miguel says:

    Do you any tutorial about Reed Solomon codification?

  282. russ ward says:

    lyons “understanding dsp” book was good on dft but weak on fir –
    57 page chapter of dsp tricks could have been better spent –
    do not buy this book but maybe read it via interlibrary loan – instead buy ifeachor 1993 –
    the lyons “essential” book is far more useless – avoid it

  283. Safiya says:

    This is just amazing!
    But, don’t you have something about analog communication?

  284. Pratibha Varadkar says:

    A fantastic initiative!!! :-D…Helped a lot.

  285. rahul says:

    Referring to the list of generator polynomials given on page 2. The number of binary bits for both G1 and G2 for a given constraint length are not matching. Why is this so?

  286. Jeroen says:


    Very informative tutorial. One thing about non-linear behavior is unclear to me however, hope you can give me a short answer.

    If you look at an ideal clipping device, the output signal will graduately become a block-shape as the input-sine amplitude increases. My question now concerns interpretation of “saturated output power” (0 dB IBO and 0 dB OBO) of the TWTA:

    1) Is it the power of the entire block-shaped output signal (so including harmonics)?
    2) Is it the power of the fundamental harmonic in the block-shaped signal?

    There is a 0.9 dB difference between the two interpretations, but I’m not sure how to interpret this correctly.

    Best regards,


  287. Malvika Kamat says:

    when only a few bits are reversed, the method cannot bring back the original sequence! What is then done to get back the original sequence?

  288. ALON says:

    Amazing tutorial

  289. Jonathan C. says:


    I have the same request as Mudita, could you elaborate on table 7, and also possibly table 9? I have tried for a long time to get the same calculation but I cannot understand how to calculate them.
    I have found that equation 3 works for the state changes in figure 7, but not for the tables, as if they are indexed differently somehow.

    Again the request us that a sample calculation be provided for the tables 7 and 9,


  290. Brad VS says:

    Russ, you need more sleep, as I see you posted at 4:28 am. As stated, the essentials book is “… a great book for rank beginners and all high school students.” Perhaps you were expecting more, especially when you appear to compare it to ifeachor.

    I work for an RF comm company, and a number of the dsp gurus around here speak glowingly (no exaggeration) about Richard’s “Understanding…” book. To each his own.

  291. ouyang says:

    there is a typing error in the second line of the last paragraph:
    “… but if link deterioratesm le’ts say due to rain fade…”.
    it should be “deterioratesm” and “let’s”.

  292. Larry Jubb says:

    It is now January 2017 and Amazon still does not list a hard-copy (print version) for sale. Is there a new date for availability of the printed version?
    Larry Jubb

  293. resh says:

    Dear Charan,

    If FFT is used for transforming time domain signal to frequency domain, then in OFDM, at receiver part, we should get frequency domain. But the input signal is in time domain, and after doing FFT and IFFT, I thnik the original signal is going to be obtained.

    I would be pleased to help me about FFT at the receiver.

    Thank you,


  294. mary says:

    wonderful tutorial. please can i get the password? i need to copy somethings for my test. thank you

  295. Job Villafuerte says:

    I looked at the OFDM tutorial and it was very descriptive for me to understand so I’d like to read more tutorials from your web page.

  296. Cinaed Simon says:

    When will the printed book be available?

    Thank you.

    • Charan L. says:

      It keeps getting delayed as we find more and little errors in it. having an eBook has helped us to clean it up. But I think, now it is planned to start printing in Mid March and should be available by end of April on Amazon.
      Thanks for sending me that error. Will look at it and fix it. Thanks again! – Charan

      BTW- What did you think of the other chapters?

  297. cinaed simson says:

    I have a comment on FFTChapter6, equations 6.1, 6.2. and 6.3.

    Given the definition 6.2, then 6.3 is always 0.

    I think you really meant

    lambda_f = 2*PI/N=tau/N
    lambda_k = lambda_f*k

  298. Rudy says:

    First of all, I am a great admirer of your website. So when I found out you wrote a book on Fourier Analysis I knew I had to buy your ebook. However there is a HUGE!!! problem with your ebook. It won’t open on the Amazon cloud reader!!! It can only open on a single kindle device or on a phone/tablet containing the kindle app. As of now, you are the only Amazon ebook in my 239 ebook collection that won’t open on the amazon cloud reader. Can you PLEASE make your book available on the amazon cloud so it can be properly studied and read by anyone, anywhere, on any device in the world? I myself read technical ebooks on my laptop when I travel or on my desktops when I need larger viewing screens for charts and equations and a desk to write on. This is only possible because of the amazon cloud reader.

    Also, when will you be printing a hard copy of your book? I would love to own both a digital and a hard copy of your work. Thanks.


    • Charan L. says:

      The print copy should be out by end of April 2017. About the eBook, unfortunately I don’t control what devices it will work on, Amazon does that. I will look further into this issue but right now I dont know as I can help much.

  299. Maneesha K says:

    Wonderful explanations Mam. Didnt knew Learning Digital Communucations and the very scary Fourier Transforms was this easy. Thanks a lot for putting effort in creating such wonderful tutorials.

    Looking forward for more of them.

  300. BELJO BABU says:

    Really gud article,easy to understand,thank you

  301. R.Runthala says:

    after reading a lot , i cant find how connections ( basically I/Ps ) to modulo-2 adders are decided , you mentioned that Peterson and weldon mentioned about how to decide the Polynomial , but i cant find that,so can you plz let me know how polynomials (i.e which Shift registers output will go to which Modulo adder and how they are connected.

    • Charan L. says:

      Let’s say the polynomial is x^2 + x^3
      Then the coefficients are 0, 1, 1. Now 0 being the coefficient of the linear term x, 1 being the coefficient of two next polynomials x^2 and x^3. Then these are your connections.
      Its really quite simple.
      Charan Langton
      PS I have already given a list of “good” polynomials in the tutorial.

  302. Kwame Ackah Bohulu says:

    Hi Charan, Thank you so much for this very detailed tutorial on Turbo Codes. I am originally from Ghana and currently doing my masters in Japan. In my attempt to further understand what i read about Turbo decoding algorithm, i wrote a program in MATLAB. The issue that i have run into is that my Eb/No vs BER graph tends to oscillate instead of decrease smoothly with every iteration . I was hoping you could give me some pointers as to the possible errors i could be making. Thank you.

  303. Sumit says:

    Hi, awesome note. Thanks a lot. Can you help us further with the answers to your questions at the end. Thanks 🙂

    • Charan L. says:

      Not sure what you are asking, Sumit. What questions? I do not see any.
      Charan langton

      • Sumit says:

        I meant to ask the Questions at the end of chapters . For e.g. in Chapter 1 “Trigonometric Representation of Continuous-time Periodic Signals”, Question 8 states : What is the maximum amplitude of N harmonic cosine waves added together. What is it for sine waves ? These are very nice questions and the answers will further help in understanding the subject.

  304. please can I get certification course?

  305. Bing says:

    Hello Charan,

    Could you confirm which s/w & tools were used in simulating these results?


    • Charan L. says:

      I used Cadence SPW, Signal Processing Workstation. SPW is a wonderful program for communication system simulation, old and stable. I am right now trying to transition to Simulink but do not find it as intuitive nor as easy to use as SPW. – Charan Langton

  306. Bing says:

    Hello Charan,

    Could you confirm which s/w & tools were used in simulating these results?


  307. HI, some links don’t work anymore. Actually most of them. Anyway your tutorials are great.

  308. Seth Pree says:

    Hello Charan,

    This is Seth the physics student from UCLA. I enjoyed our discussion on the flight from Oakland, and thank you for your insight on weighing career options.

    The work I mentioned related to solitons is referenced on our research webpage:

    On that page there is a video of the effect along with a few pictures and citations.

    Best Wishes!

  309. Sharath Nandalike says:

    Hello Ma’am,

    Where to find your tutorials. I am seeing only the comments when I clicked on Digital communications tutorials in the home page.



    • Charan L. says:

      If you click on the link, it has something like this on the page.
      Description: Differential Phase Shift Keying

      Download: diffcod.pdf

      Thats the tutorial.



  310. Charan L. says:

    Post comments, questions here. Thank you and please post a review of my book on Amazon (only if you like it!)

  311. Satya says:

    Thanks for the amazing lectures!! I am glad to know if there are any lectures explaining the In-phase and Quadrature phase.


    • Charan L. says:

      There is often confusion about what the terms In-phase and Quadrature means. Very simply, this is an idea that comes from the complex representation of a carrier. A carrier is a periodic signal of a particular frequency, say f0. But periodic signals ( as used in Fourier series representation, which is the signal processing holy grail) are said to come in two forms, a sine wave and a cosine wave. They are of course the same thing, with each a shifted version of the other. cos(wt) = sin(wt+ 90) However, because this shift is (90 degrees) these two waves are are mathematically orthogonal to each other. The sine wave is hence located at the quarter point, (90 out of the 360 degree cycle) or is said to be in quadrature-phase to the cosine wave. So it came to be that we call the cosine the in-phase or I and sine the quadrature-phase, or Q channel. In complex notation we write the carrier as cos(wt)+jsin(wt). The j tells us that the sine wave is in quadrature-phase or in quadrature from the cosine. So that is all there is to the I and Q conundrum. Very simple idea really.

      Any time, any one talks about in-phase and quadrature-phase they are just talking about a complex carrier, consisting of a cosine and sine of the same frequency, both independently modulated with data to create a modulated carrier. The I and Q channels (the shortcut way of referring to in-phase and Quadrature-phase signals) are nearly always treated as independent signals and are added together to create a “real” signal.

      If you were asking a different question, than what I have written here, let me know.
      Charan Langton

  312. Gianfranco says:

    I am approaching Fourier Transfom. Your tutorial is very useful and intuitive. Thanks a lot.

  313. Chandru Aswani says:

    I think I found a typo on Pg-12, Tree Diagrams section: Ref. Fig-9, at the first coding step, the output is 11 and the new state is 100. However, the text says ‘111’.

    Many thanks for this lucid tutorial.

  314. Chandru Aswani says:

    In Fig-10, I think the labels need to be swapped for correctness.

    Thank you for the lucid tutorial!

  315. Chandru Aswani says:

    In Chapter 2, Eq 2.3, I noticed that the right-hand side contains a ‘j’ in the denominator. Is this a typo?

    Many thanks for this lucid book!

    • Charan L. says:

      Do believe you are correct. the “j” on the numerator should not be there. Another item to be added to the erratta. Thanks for pointing it out. How do you like the book otherwise?
      Charan Langton Please send me your address, I will send you a free copy of the book.

  316. Levent says:

    This is a very nice tutorial. I love how you make examples from real life to explain the concepts. For your information, the links you give at the end of the tutorial are not active

  317. Niyongere says:

    These tutorials are helping learn concepts that I thought were complicated. With these tutorials I find digital communication interesting.

    I thank God who worked through you so that many people can be blessed.

    Thank you.

  318. Niyongere says:

    These tutorials are helping me learn concepts that I thought were complicated. With these tutorials I find digital communication interesting.

    I thank God who worked through you so that many people can be blessed.

    Thank you.

  319. Tim says:

    Hello Charan,

    My students and I have greatly enjoyed your tutorials over the years. Would you possibly be available for a brief Skype conversation with my senior digital communications class, to talk about what a career in communications looks like, and to share any career advice you might have for them?

    Sincerely, Tim

  320. Pedro Oliveira says:

    Thank you so much for your tutorial on Fourier Analysis (“Intuitive Guide to Fourier Analysis”), particularly Chapter 6 on the DFT.
    I’m doing a project report at university and wanted to reference your work, but can’t seem to find the file now on this page. Have you erased it?
    Thank you in advance for your help.
    Kind regards,

  321. Leo_Cheung says:

    For the ‘decoding using a sequential algorithm’,I get confused about the error counter.
    Since for the decoder, it can not know the real information bit which has been transmitted.
    So, how you know it is error when you decode and increase the error count?

    • Charan L. says:

      There are only specific transitions that can happen. For example, if the current bit set is 00 and then we get 01 and the transition does not allow that, then we know an error has occurred either in the current set of bits or some where earlier.

  322. rabih ramadan says:

    First thank for your great tutorials
    so Im working on a research project on adsl systems the ansi standard and I can’t find any good explanation of the dmt modulation in terms of the channel model in the adsl wired channel and the reed solomon coding and the scrambler block in the block diagram and the bit loading algorithms implemented in the adsl system like water filling and such algorithms .
    I was wondering if you can help me with this subject and I would be really really greatful to you.
    thank you so much.

  323. VK says:

    Hi Charan,
    From what I understand from different texts, I think I agree with arun’s comment above.
    In fig 11. The bandwidths shown for sinc pulses, must all be doubled. That is, the single sided bandwidths of the red, green and blue curves must be 1, 0.5 and 0.25 respectively. Can you please check and clarify.

  324. peyman says:

    Excited and respectful and respectful
    I am a graduate student in computer network engineering and study in Iran
    And I’m investigating cryptography and decryption with the convolution of the code
    I need an algorithm to capture and hide the data and submit an image file, and eventually send the data hidden behind the photo to be detected in the receiver.
    please guide me

  325. Maria Regina says:

    Thank you.

  326. Yatender says:

    Great mam… great work done by you. It is helping me learning my weakest part.

  327. Tarun Cousik says:

    Hi Charan,

    I recently got your book(digital copy) and I’m planning to plow through it over the course of this month. I love the fact that you made this page for correcting errors, wish other authors would do the same :). If I find any errors, I’ll keep you posted here.

    My first one- small error, but it had me scratching my head for 5 mins. Page 17, Fig 1.13b and Fig 1.13d, I believe there should be a minus sign before the (1/3)cos(3wt) and (1/7)cos(7wt) terms in the figure’s description. You stated it correctly in the equations below (eqns. 1.9, that’s where I conformed my suspicion).

  328. Pascal Renucci says:

    Hi Charan,

    I’ve been a big fan for many years, as yours was one of the first DSP/comms-explained sites, which I found during my stint at Lockheed in Sunnyvale, CA, working on the MUOS program.

    I was thrilled to see recently the publication of this book, and immediately bought it. The book is a goldmine and I plan on reading it cover-to-cover. The typos are inevitable, don’t worry.

    I did find one, I believe, just now: bottom of page 68 purports to list an identity for |z| = 0.5*(z + z*). However, the RHS yields Re{z}, not |z|.

  329. Hugh B says:

    Hi Charan, Thanks for the great tutorials. In the “All my filters” tutorial, on page 2, you say “Writing the transfer function for the filter in Fig. 6.4.1” … but where is Fig. 6.4.1 ? Perhaps it was in an earlier tutorial, forgive me if I’m missing something obvious!
    I’m in the UK and currently studying for a B-ENG in Electronic Systems Engineering. The Phase locked Tutorials fitted in really well. Thanks.

  330. Waseem says:

    Hi Charan,

    First of all, many thanks for the help. But the link is not working.

    Can you please update the post and provide a new link?

    Many thanks,

  331. Bessem says:

    Understanding DSP fulfills its objective: A very useful book for students to understand DSP. Explaining complex subject in a simple way needs a lot of effort. Profs don’t make this effort. At the end they are not teachers. Anyway I “enjoyed” this book, especially the tricks!

  332. Ramakrishna says:

    maam, how can i get this book?
    Is there any online seller who sell these books?
    Explanation is very good maaam, thank you for helping

  333. Ramakrishna says:

    very good explanation maam!

  334. Muhammad says:

    Respected author

    You have done an excellent job by providing a masterpiece of work in the form of Intuitive Guide to Fourier Analysis and Spectral Estimation book. It is really an excellent text on the claimed topic.

    Wonderful explanation with beautiful figures. Simply beautiful. Waiting for more such useful text in future. Keep it up.

    • Charan L. says:

      So very touching of you to say that. I am humbled by it! Thank you.
      I hope you purchased the book on Amazon. In Kindle it is quite inexpensive.
      Thank you very much again for your kind words – Charan

  335. David Morley says:

    I have read enough of your tutorials to know that your book will be excellent but you need to add a link to places that sell it. 🙂
    Thank you for providing Matlab to go with it. For anyone who doesn’t have or can’t afford Matlab, Scilab is an open source alternative that can run all Matlab code. This is a link to it
    Freemat is another Malab clone but I don’t know as much about it (

  336. John says:

    Any chance of getting the answers to the book questions?

    Also, will there be an update to the ebook if you’ve already purchased?

    Great book so far…love it.

    • Charan L. says:

      Since the book is being used as a text book, I am asked not to provide the answers on the open forum. The questions are actually designed to be pretty simple. Perhaps, I will create a page, where students can post their answers.

      Thanks a bunch for letting me know, you liked the book. I have looked into how to provide update to the Kindle eBook but really can not figure out a way to do that. Amazon does not offer updates of Kindle eBooks. I wish they would let you download the latest version.

      Thanks again,

      • Sven E Widmalm says:

        Excellent book! However, as having to learn on my own, I find it frustrating that all those question pages are left without answers. If a teacher is using it as a textbook it would be a wonderful help for his/her students to prepare for exams IF answers were given. You may think they are simple. Everything is simple for those who already know the topic. All the questions may or may not be simple for all readers. Anyway, the learning curve would be less steep for most readers if answers were provided, and any professional teacher should be able to write variations of the questions instead of just copying your Question-pages. I am unfortunately in the group who needs to know if my answers are correct. The teachers should not need your help. Many students do.

        • Charan L. says:

          Hello Sven,
          I understand your concern. However, because the book is used in some universities (MIT for example), the publisher ask us not to provide the answers. However, most of these questions are really very simple. Most I think can answered without doing any calculations. If you have a problem with a particular question, please ask here. I will try to answer it.
          Glad you like the book and are getting something out it. – Charan

  337. John says:

    Thanks for the response.

    I didn’t know the book was going to be a “text” book as it didn’t seem to be styled like one so I thought I’d ask about the answer sheet. Sometimes it’s frustrating trying to do a problem and not knowing whether you got it correct…hence the inquiry.

    BTW, it’s refreshing to read about the Fourier transforms the way you’ve presented it. Many books don’t even mention the DTFT or if they do they don’t distinguish it from the others in a clear manner. Hence, many texts end up just making it more confusing than it needs to be. You’ve done a terrific job clearing most of that up.


  338. Mike says:

    Hi Dr Langton
    Would you be able to advise me when your book will be available in hard copy.

    I’ve read some introductory chapters and I must say, the book is very well written. Keen to have a copy.

    • Charan L. says:

      The book will be available end of this month. Look on Amazon around June 10th.
      I am glad you like it. Appreciate your saying so.
      Thank, Charan

  339. Zhe.zhu says:

    Hi Charan:

    I have find a same error as Tarun Cousik did, chapter 1, Figure 1.13, page 13. it should be “x2 = x1 – (1/3)cos(3wt) and x4 = x3 – (1/7)cos(7wt)” but your are ” x2 = x1 + (1/3)cos(3wt) and x4 = x3 + (1/7)cos(7wt) ” . And, by the way, for sine waves i.e. Figure 1.12, the last summed wave are presented with “x(t)”, but in your cosine waves i.e. Figure 1.13,page 13, the last summed wave are expressed with x4.

    Have good day!


  340. wei sun says:

    great website. And, easy to understand. Hope to write more posts about digital communication

  341. Mike C says:

    I just bought this book in hardcover–I like the color graphs. They make the waveforms easier to see and understand. I have two questions: 1) Why no index? As a reference book, it really needs one. 2) When will you publish the MatLab code?

    • Charan L. says:

      Hello Mike,
      The code is here on the website, perhaps a bit hard to find. Here is the link.

      The index will be added back in the next printing. We were initially going to do the book only in Kindle, which has searching capabilities and hence index is superfluous. So I guess in the next version, we will put the index back. I might add it on online here first. I will let you know when I do that. Thanks for your comments. Hope the book is useful to you.

  342. nisha says:

    Awesome, very well written article. Many important points are covered here. Im glad that you shared this helpful information with us.
    I am really thankful to the blog owner for help us by giving valuable study materials.

  343. Kris says:

    Hi Charan
    many thanks for this wonderful trove of comm. theory papers. I work for a ASIC/Systems company that is in the wireless comm field. And I have found myself referring to your tutorials time and again. This website really shows how comm. theory should be really taught to students who are aspiring to be engineers and not mathematicians.

    I do have a question regarding the filter theory paper- in the section about MMSE equalization.
    Specifically Equation 1.17 that specifies y(i) in terms of s(i) and n(i)

    1) what is s(i). Is s(i) used in place of x(i) that was the original transmitted sequence of symbols
    2) How would you know apriori the channel response s(i) + 0.5*s(i-1) + n(i) – are you assuming there are 2 rays caused by multi-path ?
    3) Similarly Equation 1.24 is also confusing. How do you actually derive the equation 1.24. Could you please help explain further ?


  344. Kris says:

    Hi Charan
    many thanks for this wonderful trove of comm. theory papers. I work for a ASIC/Systems company that is in the wireless comm field. And I have found myself referring to your tutorials time and again. This website really shows how comm. theory should be really taught to students who are aspiring to be engineers and not mathematicians.

    I do have a question regarding the filter theory paper- in the section about MMSE equalization.
    Specifically Equation 1.17 that specifies y(i) in terms of s(i) and n(i)

    1) what is s(i). Is s(i) used in place of x(i) that was the original transmitted sequence of symbols
    2) How would you know apriori the channel response s(i) + 0.5*s(i-1) + n(i) – are you assuming there are 2 rays caused by multi-path ?
    3) Similarly Equation 1.24 is also confusing. How do you actually derive the equation 1.24. Could you please help explain further ?


  345. Preethi says:

    Can you please elaborate on MSK as to how I and Q waveforms are drawn and the MSK signal is plotted?

  346. Kris G says:

    Hi Charan
    I think there maybe a typo. In equation 40, Tb = 2*Ts for QPSK (relationship between symbol and bit time). I think it should be Tb = Ts/2.

    Rb = log2(M) * Rs
    Rb = 2 * Rs

    which would make Tb = Ts/2

    My fear is that this incorrect relationship between symbol and bit time maybe used in the computation of BER based on Euclidean distance. Could you please look into this or correct me if I misunderstood

    thanks again.

  347. Nathan says:

    I think you have made a mistake with energy per bit.

    Energy per bit = (Average Power) / bit rate = ((A_peak^2)/2) / bit rate = (A_rms^2) / bit rate

    You refer to A as peak amplitude but are missing the division by 2

  348. John Liston says:

    I noticed a sign error on page 18 with regards to the conversion of C/N0 to C/N.

    At the top of page 18 the equation reads “C/N0 = C/N x Bn” (not in dBs)

    At the bottom of page 18 the equation reads “C/N = C/N0 + Bn” (in dBs)

    This should read “C/N = C/N0 – Bn” (in dBs)

  349. Marge Espina says:


    I was wondering what your thoughts were on “All About Circuits”, would you consider adding them to the “Links” page? Here is the URL for their website if you would like to have a look:

    I am looking forward to hear from you the soonest.


  350. guoqiang says:

    What if There is a term like aksin(wt+a) in a signal. Intergate aksin(wt+a)*sin(wt) could be zero. How to get the coefficient of this term.

  351. guoqiang says:

    Hi thank for your selfless help , I want to know where can I get the answer of the questions

  352. Aryan says:

    Let’s say that we take an example of Bluetooth/WiFi…

    I have some data which need to be transmitted from Device A to Device B (let’s say via Bluetooth)

    let’s assume this happens at Device A
    1)raw data (payload) bits –> 2) modulation and coding(MCS) —>3) adding all those shit extra headers from n/w layer and mac layer —-> 4)multiplication by a continuous waveform —-> 5)upscaling to the centre frequency (@2.45 Ghz)

    Now that your hardware (Bluetooth radio) is ready to transmit ……… I have a question here,

    At what rate does it transmit in real time over the air ?
    like 100 times a second or 100 Hz frequency or 50 Hz frequency or 20 Hz frequency (100 Hz: 0,0.01,0.02,0.03,0.04,0.05……….seconds)

    I believe bluetooth has a specification that It needs to transmit at every 100ms over the air.

    Does this transmission rate (T_actual )have any relationship with my digital data at the output of step 3 ??
    For Example, my raw data before modulation and coding would be a binary data which is represented by some waveform (ex: square w/f representing in Amplitude vs time … this time here is of Bit time Tb and after MCS , it will be Symbol Time Ts … Do we have any relationship between Ts and Actual transmission time T_actual )

  353. Hugo Mascialino says:

    Dear Sir,

    A clarification, I am reading tutorial 13, a clarification in table II on page 4, the third column of (extended again by 1 bit), says that the minimum distance and Hamming is 3 when actually it is 2 (dmin = two),. it’s a mistake?

    Adding a sixth parity bit, what is the correct six-bit sequence with dmin = 3?

    Also the integers 8 and 9 are in binary like 1001 for the integer 8 and 1010 for the integer 9. It should be 1000 and 1001 respectively.

    On the paragraph: Number 2 can then turn into Number 8, I should say Number 9.

    Thank you for your answer.

    Cordially. Hugo

  354. Hugo Mascialino says:

    Fig 1

    Table II – Codespace vs. valid codewords, extending the sequency by adding a parity bit

    Integer 4 bit Seq. Extended by 1 bit Extended again by 1 bit Comments

    0 0000 00000 000000
    1 0001 00011 000110
    2 0010 00101 001010
    3 0011 00110 001100
    4 0100 01001 010010
    5 0101 01010 010100
    6 0110 01100 011000
    7 0111 01111 011110
    8 ? 1001 10010 100100 8 ≠ 1001
    9 ? 1010 10100 101000 9 ≠ 1010

    6 more not used 22 more not used 52 more not used

    Integer 4 bit Seq. Extended by 1 bit Extended again by 1 bit
    4-bits word 5-bits word 6-bits word

    0 0000 00000 000000 d0 – d1 = 2
    1 0001 00011 000110 d1 – d2 = 2
    2 0010 00101 001010 d2 – d3 = 2
    3 0011 00110 001100 d3 – d4 = 4
    4 0100 01001 010010 d4 – d5 = 2
    5 0101 01010 010100 d5 – d6 = 2
    6 0110 01100 011000 d6 – d7 = 3
    7 0111 01111 011110 d7– d8 = 4
    8 1000 10001 100010 d8 – d9 = 2
    9 1001 10010 100100 d9 – d0 = 2

    6 more not used 22 more not used 52 more not used
    Hw = 3 Hw = 4 Hw = 5
    dmin = 1 dmin = 2 dmin = 2 (dmin isn´t 3)

    Dear Sir,
    A clarification, I am reading tutorial 13, a clarification in table II on page 4, the third column of (extended again by 1 bit), says that the minimum distance and Hamming is 3 when actually it is 2 (dmin = two),. it’s a mistake?

    Adding a sixth parity bit, what is the correct six-bit sequence with dmin = 3?

    Also the integers 8 and 9 are in binary like 1001 for the integer 8 and 1010 for the integer 9. It should be 1000 and 1001 respectively.

    On the paragraph: Number 2 can then turn into Number 8, I should say Number 9.

    Thank you for your answer.

    Cordially. Hugo

  355. Nguyen Anh Tuan says:

    Hi Charan
    Can you share your Matlab code for this tutorial

  356. Jeff Janke says:

    I am a retired engineer who worked in a parallel field and am now relearning all the things I want to learn from my university days. Your writing is much appreciated. Thank you!

  357. Ndangio says:

    Hi Charan

    Thank you for the tutorial.
    I am trying to use root raised cosine filter at the receiver for offline data processing. I captured downconverted signal which has 2.5 GHz baseband data using a digital oscilloscope. My question is on the signal recovery and equalization. I wrote a program in Matlab when i try to plot constellation diagram for QPSK i get a slanted straight line. I used the formula given on your tutorial to calculate the filter rolloff value which is 0.7. Could you kindly advise how to perform signal equalization and recovery?
    Thank you very much!

    • Charan L. says:

      A slanted line for the constellation tells me that you are way off on your point of bit recovery. The I or the Q channel is off by a full half symbol in time. Thats because both I and Q are being mapped with same phase. First fix that.

  358. Ami Munshi says:

    Hi Charan

    Could your please tell me if number of subcarriers in OFDM increase, does the corresponding BER decrease? Is there any mathematical proof for the same?

    • Charan L. says:

      No, if you increase the number of sub-carriers, your BER will not decrease. There is no direct relationship between the number of sub-carriers and BER.

      The number of sub-carriers are chosen based on the coherence bandwidth of the channel and the signal processing capability of the receivers. Currently This number is around 2000 K carriers which seems to give a reasonable performance for wi-fi links.

      The number of sub-carriers in a OFDM link is very much a function of the fading and multi-path parameters of the link. There would be no need to increase the number of carriers, if a particular number satisfies the link requirements.

  359. Sourav Guha says:

    Can anyone help me as to how i can add ISI to my signal in MATLAB?

    • Charan L. says:

      You just add a slight time shift to the I or the Q channel relative to the other. Or you can add a much smaller copy of your signal (say -10 dB), time shifted by a fraction of the sample, to the the main signal. These are two ideas for adding an artificial form of ISI. They will both add jitter which is a form of ISI.

  360. varun says:

    Here is link to the errata pdf to the book I made in Latex online

  361. Sven E Widmalm says:

    You wrote: Posted on November 7, 2016 by Charan L. — No Comments ↓
    Intuitive Guide to Fourier Analysis and Spectral Estimation
    Matlab code for selected figures and examples is given here.
    If you find any issues with these programs, please email me.
    Last edited 11/24/2017
    Matlab files from the book are included here.
    Signal data required for some of these scripts will be uploaded soon.

    What is your definition of “soon”?

  362. Charan L. says:

    Thank you all. I do think the second printing is a lot better.

  363. Scott Siclari says:

    What a great and wonderful story! How wonderful of you to share too! I really wish I worked with more engineers like you, not just because of your gender and diversity, but because of your attitude, love of the field and your willingness as well as ability to teach and understand complex technical subjects. Your penetrating story and career example is exemplary for women as well as anybody else thinking of or pursuing an engineering career. Furthermore, you’re making a difference in childhood learning too!

    • Charan L. says:

      What a wonderful moment for me when I read your comment. You are extremely generous to say so.

      As I said somewhere, we are at the pinnacle of human achievement and should be proud of our accomplishment at making life better for the world. I am sorry to see our field get so slammed lately.

      Best, Charan

  364. mark leeds says:

    Hi Charan: I am a DSP beginner and I have the first printing of the book. I just started looking at it and I’m very scared of typos because of my shallow DSP knowledge. Is it possible to exchange the first printing of the text for a second printing ? Thanks.

  365. Tsarev Yurij says:

    Thank you for your knowledges about communication systems! They were very useful for me.

9 Pings/Trackbacks for "Charan L."
  1. […] Communications Engineering Tutorials – […]

  2. […] Dec. 22 A *nice* series of Tutorials on digital communications engineering is written to be easy to read, so it has a lot to offer for the student of modern synthesizers. […]

  3. […] A large series of tutorials in digital communications […]

  4. […] or why this formula is so bizarre,  you can read a 5-part article on Fourier Transform on this very good website  (especially part 4 and part 5) which is the best article for beginners that I read (and I […]

  5. […] or why this formula is so bizarre,  you can read a 5-part article on Fourier Transform on this very good website  (especially part 4 and part 5) which is the best article for beginners that I read (and I […]

  6. […] If you are looking for theoretical material for learning digital signal processing and software defined radios see Suggested Reading on the GNU Radio website. If you are an absolute newbie to SDR (like I was when I started) and haven’t even got a clue of what quadrature signals are, I suggest you start with Quadrature Signals: Complex, But Not Complicated and the excellent tutorials at […]

  7. […] Tutorial 19 – Unlocking the Phase Locked Loop (PLL) – Part … […]