Simulation of Digital Communication Systems Using Matlab [eBook] – Second Edition

Simulation of Digital Communication Systems using MatlabSimulation of Digital Communication Systems Using Matlab [eBook]
Author: Mathuranathan Viswanathan
Published: Feb. 18, 2013
Language: English
ISBN : 9781301525089
Words: 57,050 (approximate)
Release date: 25 September 2013 (Second Edition)

1 Star2 Stars3 Stars4 Stars5 Stars (109 votes, average: 4.01 out of 5)


(Secure Payment gateway by paypal, immediate download after successful payment)
Exclusive when purchased on this website!!! Buy 2 formats at same retail price: PDF (for viewing on PC) and EPUB (Great to view on Apple iPad/iBooks,Android, Nook, Sony Reader, Kobo, and most e-reading apps including Stanza, Aldiko, Adobe Digital Editions, others) at same retail price.

Note: Please provide correct email address when purchasing the ebook. The ebook will be sent to the email address upon purchase. Upon successful purchase, you can contact the author for any doubts in the text/code. Your queries will be promptly responded in a day.

Are you interested in simulation of communication systems in Matlab and do not know where to start? If so, your search for a good text ends here. Some of the simulation topics include various digital modulation and channel coding techniques, OFDM, fading channels, random distributions .Essential topics in digital communication are also introduced to foster better understanding of simulation methodologies.

This ebook is meant for students and instructors who are interested in simulation of signal processing and digital communication with Matlab. You should have a fair understanding of Matlab programming to begin with. Essential topics in digital communication are introduced to foster understanding of simulation methodologies.

This second edition includes following new topics – propagation path models like – log normal shadowing, Hata-Okumura models, in-depth treatment of Shannon-Hartley equation and Channel Capacity calculation

Some of the key topics include: Sampling theorem, hard & soft decision decoding, Hamming codes, Reed Solomon codes, convolutional codes, Viterbi decoding, Inter symbol interference, Correlative coding, Raised cosine filter, Square Root Raised Cosine filter, Gibbs phenomenon, Moving average filter, Probability and random process, Chi-square, Gaussian, Uniform, Rician, Rayleigh distributions, demonstration of central limit theorem, Propagation models, fading models, digital modulation techniques, OFDM, spread spectrum.

Note: If you are residing in India and do not have a credit card to purchase this book, write to us at We will assist you.

Table of Contents:

  • Chapter 1: Essentials of Digital Communication
    • 1.1 Introduction to Digital Communication
    • 1.2 Sampling Theorem – Baseband Sampling
    • 1.3 Sampling Theorem – Bandpass or Intermediate or Under Sampling
    • 1.4 Oversampling, ADC – DAC Conversion, pulse shaping and Matched Filter
    • 1.5 Channel Capacity
    • 1.6 Performance of Channel Codes
    • 1.7 Distances: Hamming Vs. Euclidean
    • 1.8 Hard and Soft Decision Decoding
    • 1.9 Maximum Likelihood Decoding
  • Chapter 2: Channel Coding
    • 2.1 Hamming Codes – How it works
    • 2.2 Construction of Hamming codes using matrices
    • 2.3 Introduction to Reed Solomon Codes
    • 2.4 Block Interleaver Design for RS codes
    • 2.5 Convolutional Coding and Viterbi Decoding
  • Chapter 3: Inter Symbol Interference and Filtering
    • 3.1 Introduction to controlled ISI (Inter Symbol Interference)
    • 3.2 Correlative coding – Duobinary Signaling
    • 3.3 Modified Duobinary Signaling
    • 3.4 Raised Cosine Filter
    • 3.5 Square Root Raised Cosine Filter (Matched/split filter implementation)
    • 3.6 Gibbs Phenomena – A demonstration
    • 3.7 Moving Average (MA) Filter
  • Chapter 4: Probability and Random Process
    • 4.1 Introduction to concepts in probability
    • 4.2 Bayes’ Theorem
    • 4.3 Distributions and Density Functions
    • 4.4 Gaussian random variable and Gaussian distribution
    • 4.5 Uniform Random Variables and Uniform Distribution
    • 4.6 Chi-Squared Random Variable and Chi-Squared Distribution
    • 4.7 Non-central Chi-squared Distribution
    • 4.8 Central Limit Theorem
    • 4.9 Colored Noise Generation in Matlab
  • Chapter 5: Channel Models and Fading
    • 5.1 Introduction to Channel models
    • 5.2 Friis Free Space Propagation Model
    • 5.3 Log Distance Path Loss or Log Normal Shadowing Model
    • 5.4 Hata – Okumura Models
    • 5.5 Introduction to Fading Models
    • 5.6 Rayleigh Fading and Rayleigh Distribution
    • 5.7 Rayleigh Fading Simulation – Young’s model
    • 5.8 Simulation of Rayleigh Fading Model – (Clarke’s Model – Sum of Sinusoids)
    • 5.9 Rician Fading and Rician Distribution
  • Chapter 6: Digital Modulations
    • 6.1 BPSK Modulation and Demodulation
    • 6.2 BER vs. Eb/N0 for BPSK modulation over AWGN
    • 6.3 Eb/N0 vs. BER for BPSK over Rayleigh Channel
    • 6.4 Eb/N0 Vs BER for BPSK over Rician Fading Channel
    • 6.5 QPSK Modulation and Demodulation
    • 6.6 BER vs. Eb/N0 for QPSK modulation over AWGN
    • 6.7 BER vs. Eb/N0 for 8-PSK Modulation over AWGN
    • 6.8 Simulation of M-PSK modulations over AWGN
    • 6.9 Symbol Error Rate vs. SNR performance curve simulation for 16-QAM
    • 6.10 Symbol Error Rate Vs SNR performance curve simulation for 64-QAM
    • 6.11 Performance comparison of Digital Modulation techniques
    • 6.12 Intuitive derivation of Performance of an optimum BPSK receiver in AWGN channel
  • Chapter 7: Orthogonal Frequency Division Multiplexing (OFDM)
    • 7.1 Introduction to OFDM
    • 7.2 Role of FFT/IFFT in OFDM
    • 7.3 Role of Cyclic Prefix in OFDM
    • 7.4 Simulation of OFDM system in Matlab – BER Vs Eb/N0 for OFDM in AWGN channel
  • Chapter 8: Spread Spectrum Techniques
    • 8.1 Introduction to Spread Spectrum Communication
    • 8.2 Codes used in CDMA
    • 8.3 Maximum Length Sequences (m-sequences)
    • 8.4 Preferred Pairs m-sequences generation for Gold Codes
    • 8.5 Generation of Gold Codes and their cross-correlation
  • Appendix
    • A1: Deriving Shannon-Hartley Equation for CCMC AWGN channel -Method 1
    • A2. Capacity of Continuous input Continuous output Memoryless AWGN -Method 2
    • A3: Constellation Constrained Capacity of M-ary Scheme for AWGN channel
    • A4: Natural and Binary Codes
    • A5: Constructing a rectangular constellation for 16QAM
    • A6: Q Function and Error Function
  • References

  (Secure Payment gateway by paypal,immediate download after successful payment)

Also Available at your preferred online stores: (Click the icons to buy directly)

PDF and EPUB versions – Bundle

Buy 2 formats : PDF (for viewing on PC) and EPUB (Great to view on Apple iPad/iBooks,Android, Nook, Sony Reader, Kobo, and most e-reading apps including Stanza, Aldiko, Adobe Digital Editions, others)

 (Secure Payment gateway by paypal)

Reviews from Online Stores

amazon_review_3 amazon_review_2Capturesmashwords_33smashwords_review

(Secure Payment gateway by paypal, immediate download after successful payment)

  • Adel Khaled

    Hello sir,
    Is there any book have a complete simulations about femtocells and the interference between the femtocell and the macro cell?

  • Abdulbagi Elsanousi

    hello sir …. i have code of ccofdm done through AWGN and i want to use rayleigh channel …could you help me ?….

  • Pingback: Mean Root Square Error Matlab –

  • abdallah

    hello sir i want to ask u if u have any code using matlab or simulink about code shift keying modulation
    i have been searching for any refrence or code about this type of modulation but could not find anything so plz can u help ?

    • Code Shift Keying (CSK) is a modified Direct Sequence Spread Spectrum (DSSS) scheme. A simple google search will fetch the matlab code for DSSS.

      Implementation details for CSK can be found here.

      • Abdallah Kataya

        Do u mean than the code of DSSS is the same for csk ?

        • Yes, you can choose the same pseudo random sequence. But the difference is , in CSK cyclic shifts of the pseudo random sequence are used to modulate the data. K bits of input data are modulated using one of the cyclically shifted version of the pseudo random sequence. Actually it combines a form of M-ary orthogonal signaling and DSSS

          • abdallah

            do u have any idea how can i make a cyclic pn code using the pn sequence generator in simulink
            iam facing a lot of problem while iam trying to shift the code to create a new code from it
            if u can help me plz ill be thankfull

  • Isyaturr Raziah

    hello sir, i wanna ask about how to plot the rician fading code on matlab with BPSK modulation and using channel coding 1/3 convolutional code?

    • Sorry, I dont have the code right now. However, it is not tough to figure this out from Matlab’s communication toolbox documentations.

  • Pingback: Constructing a rectangular constellation for 16-QAM – GaussianWaves()

  • Jerry

    Hi Sir, I have gone through your book intensively, but i am working on msk. How different is the ber of msk from ber of qpsk?
    if they are different, how can i plot the ber of msk with carrier frequency?

    • Hello Jerry,
      MSK modulation is very similar to QPSK, OQPSK modulations. It can be interpreted as two BPSK-like modulator on I and Q channel, with one of them being shifted by half-symbol period and shaped by sinusoids. Hence the BER for MSK is identical to that of BPSK, which is given by

      Pb = 0.5 erfc(sqrt(Eb/N0))

      You can read about MSK modulation/detection in this reference
      Dayan Adionel Guimaraes, Contributions to the Understanding of the MSK Modulation, revista telecomunicaes, VOL. 11, NO.
      01, MAIO DE 2008.

  • Srikanth

    Hi Sir, What is the latest edition? and does your book include Filter design, implementation examples?

    • Second edition listed here is the latest. It is primarily intended for simulating fundamental blocks in digital communication systems. Filter design is very specific to signal processing and it is NOT covered in this ebook.

  • Pingback: How to use Histogram function in Matlab to plot the estimated PDF curve – GaussianWaves()

  • Pingback: OFDM and Cyclic Prefix – a handson demonstration using Matlab – GaussianWaves()

  • Kedir Ebrahim

    Dear sir,I am msc student and i’m working on efficient antenna polarization can u help me which type of antenna polarization is efficient for cognitive radio using matlab simulation

  • Puspraj Chauhan

    Dear sir, I am a PhD scholar and working in the field of channel modelling. Can you please help me in finding channel capacity using monte carlo simulation and symbol error rate.

  • Nizamul Nibir

    hellow sir
    can you help me providing MATLAB CODE for BER vs Eb/N0 in Rayleigh channel using Gold code and BER vs Eb/N0 in Rayleigh channel using P-N code???
    thanks in advance..

  • ruxosh

    hi mister
    can you give me matlab code just for (ber vs eb/no with 16-QAM over AWGN)

    • Akhil K Pathani

      %%%%%%%%%% Alamouti Code for 2-transmiters and 1-receiver %%%%%%%%%
      %%%%%%%%%%%%%%%%%%% 16-QAM %%%%%%%%%%%%%%%%%%
      clear all;
      close all;
      N = 10^5;
      M=16;%M-ary Constellation
      x = randint(N,1,M);
      y = zeros(2,N);
      y(:,1:2:end) = reshape(y1,2,N/2); % [x1 x2; …]
      y(:,2:2:end) =(kron(ones(1,N/2),[-1;1]).*flipud(reshape(conj(y1),2,N/2)));% [-x2* x1*; ….]
      h1 = 1/sqrt(2)*(randn(1,N/2) + 1i*randn(1,N/2));
      h2 = 1/sqrt(2)*(randn(1,N/2) + 1i*randn(1,N/2));
      H = kron(h,ones(1,2));
      hEq = zeros(2,N);
      hEq(:,(1:2:end)) = reshape(h,2,N/2); % [h1 0 … ; h2 0…]
      hEq(:,(2:2:end)) = kron(ones(1,N/2),[1;-1]).*flipud(reshape(h,2,N/2)); % [h1 h2 ..; h2 -h1..]
      hEq(1,:) = conj(hEq(1,:)); % [h1* h2* … ; h2 -h1 …. ]
      hEqPower = sum(hEq.*conj(hEq),1);% mod(h1)^2+mod(h2)^2
      for i=1:length(snr)
      n=1/sqrt(2)*(randn(1,N)+1i*randn(1,N));% AWGN Noise vector
      y3=sum(H.*y,1)+10^(-(snr(i)-10*log10(20))/20)*n;%snr is in dB
      % Scaling w.r.t Transmitted power and divided by Avg Constellation Power
      % Avg Constellation power is 10 for 16 QAM and each Transmitter power is P/2
      % so subtract snr by 10*2=20
      yMod = kron(reshape(y3,2,N/2),ones(1,2)); % [y1 y1 … ; y2 y2 …]
      yMod(2,:) = conj(yMod(2,:)); % [y1 y1 … ; y2* y2*…]
      yHat = sum(hEq.*yMod,1)./hEqPower; % [h1*y1 + h2y2*, h2*y1 -h1y2*, … ]
      z=qamdemod(yHat,M);%Qam Demodulation
      [num ty]=symerr(x,z);%findind Symbol error rate
      semilogy(snr,ser,’r-*’);grid on;hold on;
      title(‘Plot of symbol error rates for Alamouti nTx=2, nRx=1, for 16-QAM’,’Color’,’k’,’FontSize’,13);
      legend(‘sim (nTx=2, nRx=1, Alamouti(16-QAM))’);
      xlabel(‘SNR(dB) —->’,’FontSize’,11);Ylabel(‘Symbol Error Rate —->’,’FontSize’,11);

  • Pingback: How to Interpret FFT results – complex DFT, frequency bins and FFTShift | GaussianWaves()

  • Pingback: Gibbs Phenomena – A demonstration | GaussianWaves()

  • Pingback: Hard and Soft decision decoding | GaussianWaves()

  • Pingback: MIMO – Diversity and Spatial Multiplexing | GaussianWaves()

  • Pingback: Introduction to OFDM – orthogonal Frequency division multiplexing | GaussianWaves()

  • Mahdi Zaman

    Hello sir:
    What difference between PM-QPSK and DP-QPSK?
    Are PolSK and PM-mQAM modulation have linear or circular polarization?

  • noura ali

    hello sir i want a code of OFDM in DWT and IDWT instead of FFT and IFFT

    • Sorry I do not have the code. May be I can add it for the further editions.

      • noura ali

        thank you
        i wait you answer
        please help me

  • Pingback: Digital Communication Ebook Download Free – Information()

  • Othman


    How could I detect the PNC mapping of the constellations for 16-QAM? My input constellations are




    a= randi([0 M-1],1,N);

    b= randi([0 M-1],1,N);


    as you know in 4QPSK the PNC mapping for the constellations are

    1- The points 2+2j,-2+2j,2-2j,-2-2j represents 1+1j

    2- The points 2,-2 represents 1-1J

    3- The points 2j,-2j represents -1+1j

    4- the point 0 represents the point -1-1j

    So how can I know the order for z ?

    Thanks in advance


  • soum

    Sir,can u please provide me how to write the matlab codesto simulate ber function Eb/N0 for QPSK for differetes SF values

  • Pingback: Chirp Signal – Frequency Sweeping – FFT and power spectral density » GaussianWaves()

  • Pingback: Simulation of OFDM system in Matlab – BER Vs Eb/N0 for OFDM in AWGN channel » GaussianWaves()

  • riaban

    My question is related to the way a gaussian signal is generated in MATLAB. For example, I have a signal defined in MATLAB as

    signal = randn(1,1e6);

    How is this signal represented mathematically i.e in the form of an equation?

  • ashish mishra

    Sir,can u please provide the matlab codes for simo and miso channnels.I want to calculate outage and ergodic capacity


    I’m a mtech 1st year student.I am currently working on periodograms. Please help me in matlab coding in finding periodogram of a signal without using inbuilt function

  • ram shayan

    can anybody suggest how to handle this type of question?

  • Sharad Kumar

    I am a mtech 1st year student … and for thesis my topic is power efficiency in ofdm..Pls help me to find the best book for ofdm and simulation in matlab…
    Thanking You

  • Adam Mohamed Ali

    I’m a research student.Please help me by providing matlab function that generates fixed gold code
    thank you

  • Mateus Hufnagel

    This book is helping me a lot in Digital Communications chair at Master’s degree in Electrical Engineering.
    The support was fast to solve my doubts.


    I’m a research student.Please help me by providing matlab code for atleast any of the following.
    1.loss budget for a 40Gbps IMDD OFDM LR-PON
    2.16 and 8 QAM constellations before and after employing SSII cancellationat optical received power of -4dbm
    3.program for output power and reflection power of a 60KM single mode fiber

  • Othman

    Thanks a lot

  • Othman

    actually, I have two mapping signals and I want to make it as 16-QAM mapping signals, but these two mapping signals in a complex numbers

    • check the answer for your question below

      • Othman


        I am grateful for helping me, I want to rewrite the previous question, how can I merge the two matrices where x(1) is a MSB(most significant bit) for the first bits and y(1) is a LSB for the first bits and x(2) =MSB(2), y(2)=LSB(2) and so on, to get a new matrix z.

        Thanks in advance


  • Othman

    z=[ 2+5j 1+2j, -4-3j -3-2j …….]

    • Here you go,
      x=[2+5j , -4-3j, 4+2j, 3-3j];

      y=[1+2j, -3-2j, 1-3j, 5+2j];
      k=[x;y]; %vertical concatenation – the row vector y will be placed below the row vector x
      z=k(:).’ %flatten the matrix and transpose it
      output: z=> [2+5j 1+2j -4-3j -3-3j 4+2j 1-3j 3-3j 5+2j]

  • Othman

    Hello sir

    Would you please tell me how can I put two bits beside two bits from two separate matrices to generate a new matrix, but the original matrices with a complex number? because I used bitconcat and it dosen’t work becaused this instruction for real numbers!
    Many thanks

    for example;

    x=[2+5j , -4-3j, 4+2j, 3-3j]

    y=[1+2j, -3-2j, 1-3j, 5+2j]

    • Can you show the expected output matrix from x and y ?