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

This book is no longer available/updated. The book is replaced by the following books. Please choose one from below.

digital_modulations_using_matlab_book_cover

Digital Modulations using Matlab
(PDF ebook)

PoorBelow averageAverageGoodExcellent (135 votes, average: 3.63 out of 5)

Paperback (Black and White) printed book. Buy from nearest Amazon store
United StatesUnited KingdomGermanyFranceSpainItalyJapanCanada

Paperback (Color) printed book. Buy from nearest Amazon store
United StatesUnited KingdomGermanyFranceSpainItalyJapanCanada

Wireless Communication Systems in Matlab

Wireless Communication Systems in Matlab
Second Edition(PDF)

PoorBelow averageAverageGoodExcellent (179 votes, average: 3.62 out of 5)

Paperback (Black and White) printed book. Buy from nearest Amazon store
United StatesUnited KingdomGermanyFranceSpainItalyJapanCanada

Paperback (Color) printed book. Buy from nearest Amazon store
United StatesUnited KingdomGermanyFranceSpainItalyJapanCanada

Digital Modulations using Python
(PDF ebook)

PoorBelow averageAverageGoodExcellent (134 votes, average: 3.56 out of 5)

Paperback (Black and White) printed book. Buy from nearest Amazon store
United StatesUnited KingdomGermanyFranceSpainItalyJapanCanada

Paperback (Color) printed book. Buy from nearest Amazon store
United StatesUnited KingdomGermanyFranceSpainItalyJapanCanada

74 thoughts on “Simulation of Digital Communication Systems Using Matlab [eBook] – Second Edition”

  1. hello sir,
    This is vinay, I have purchased your latest book on digital communications using matlab 2nd edition , can you please write a code a matlab code on the following.
    1)BER of QPSK over rayleigh channal
    2) BER of QPSK over rician channal.

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

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

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

    Reply
  5. 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?

    Reply
  6. 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?

    Reply
    • 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.

      Reply
  7. 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

    Reply
  8. 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.

    Reply
  9. 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..

    Reply
    • %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      %%%%%%%%%% Alamouti Code for 2-transmiters and 1-receiver %%%%%%%%%
      %%%%%%%%%%%%%%%%%%% 16-QAM %%%%%%%%%%%%%%%%%%
      clc
      clear all;
      close all;
      N = 10^5;
      snr=linspace(0,25,26);
      M=16;%M-ary Constellation
      x = randint(N,1,M);
      y1=modulate(modem.qammod(M),x);
      y1=reshape(y1,1,N);
      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=[h1;h2];
      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
      ser=length(snr);
      th=[];
      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
      z=reshape(z,N,1);
      [num ty]=symerr(x,z);%findind Symbol error rate
      ser(i)=ty;
      end
      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);

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

    Reply
  11. Hello

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

    M=4;

    s1=[1+1j,-1+1j,1-1j,-1-1j];

    s2=[0.4+0.4j,-0.4+0.4j,0.4-0.4j,-0.4-0.4j];

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

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

    z=s1(a+1)+s2(b+1);

    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

    Othman

    Reply
  12. 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?

    Reply
  13. Sir,
    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

    Reply
  14. sir,
    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

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

    Reply
  16. 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.
    Recommended.

    Reply
  17. Sir,
    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

    Reply
  18. 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

    Reply
      • Hi

        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

        Reply
    • 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]

      Reply
  19. 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
    Othman

    for example;

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

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

    Reply
  20. thanks a lot,you are very kind
    you are symbol of humanity.i believe there are humanity.
    i thank you from us Iranians.
    i searched this book more 6 month,but i can’t found free version.
    please see my blog for free ebooks.this blog for my people till easy access to books
    http://www.stablewaves.blogfa.com
    thank you so so so much.thank you

    Reply
  21. Hey! Your book was very useful and helpful, but I want to know about PNC(Physical layer Network Coding) why you don’t included in your book? can you help me to know the code for 16-QAM in PNC please?
    Regards

    Reply
  22. Hey! Your book was very valuable.! As a matter of fact ,do you have a matlab code to generate autocorrelation function of the rician fading channel using clarke’s model (Chapter 5.8)
    Regards

    Reply
  23. I think it is Hierarchical modulation!!! Actually one of my friend ask me about it and there is no reference about this scheme.

    Reply
  24. Many Thanks, you are helping me a lot. Can I ask you one more question please ? As you know after modulation the 16-QAM the output is 9 constellation points, so is there any way to get 9 points in every quarter(in Gray mapping) something like this way below
    Best Regards

    Reply
  25. Hello Mathuranathan,
    Thanks a lot for your reply
    Can you please told me how can I take one bit and left the next one from a matrix or array? For example my matrix is: x=[1001,1011,0011,0001] and I want to split them like this: 1-0- , 1-1-, 0-1-, 0-0-
    In fact, I need to rearrange(decrease) these bits from four bits to two bits but in the receiver I need to put zeros between these bits and comparison between the transmitted and the received bits!!!
    Thanks

    Reply
    • You could do it via indexing.

      Consider a simple vector x= [11,12,13,14,15,16,17,18,19,20] . In other words, x(11) = 11 ,x(2)=12, x(3)=13 and so on

      If I am interested in elements 15 16 17 which are placed at indices [5,6,7], the code would be

      >> x(5 6 7)
      ans = 15 16 17

      If I am interested in alternate elements

      >> x(1 3 5 7 9)
      ans = 11 13 15 17 19

      Alternate way (more elegant)

      >> x(1:2:end) %start from index 1, increment in steps by 2, reach till the last index)
      ans = 11 13 15 17 19

      To fetch alternate elements in reverse (decreasing) order

      >>x(end:-2:1)

      More indexing methods discussed here: https://www.gaussianwaves.com/2013/05/tips-tricks-indexing-in-matlab/

      Reply
  26. Hi,
    I have read through the book and wondered how could I plot the channel throughput with the respect to the Shannon capacity in chapter 1.5? The code is not provided in the book. Looks like the formula for calculating the channel throughput is not declared neither.

    Reply
    • “Throughput” – The rate of successful message delivery (no errors) across a communication channel. It is measured in bits/second. The channel capacity is the MAXIMUM data rate for noiseless communication.

      The maximum data rate achievable on an AWGN channel (unconstrained capacity) is given in the chapter as C=B log2(1+S/N) (on page 20). The simulation for channel capacity and power efficiency limit is given in page 22,23

      For more discussions and derivations please refer appendix A1,A2 and A3 at the end of the ebook.

      Let me know if this is what you are looking for.

      Reply
      • Hi,
        Thank you for the prompt reply.
        Actually I was asking for how to plot the graph on page 30. And I thought the dots inside the Shannon limit were the corresponding channel throughput. Correct me if I am wrong. If possible, can I hav the code plz?

        Reply
  27. Hi

    Thanks a lot for your reply.

    Even while using power as as mentioned in the reply, if my understanding is right, for m= 2 ,

    2   ( m-1)  in the above example is  again  2   (  2  1    )

    Therefore only 2 states are there.   I am not sure, if I am going wrong somewhere. Please check

    Thanks a lot for your time.

     

    Reply
    • Hi,
      There exist two versions of formulas to calculate the constraint length (L)
      1) L=k(m+1)
      2) L=km

      The number of memory elements has to be interpreted accordingly.

      For a (n=2,k=1,L=3) convolutional code the constraint length L=3.

      If we use formula 1, then 3=1*(m+1) => m=2. This gives us two memory elements, which is straight forward. Then the number of states will be 2^m = 2^2=4 states.

      If we use formula 2, then 3=1*m => m=3. Then you have to use the formula 2^(m-1) to calculate the number of states. Which gives 2^(3-1)=2^2=4 states again.

      So, care must be taken to interpret the constrain length definition properly. I will elaborate more on this.

      Reply
  28. 1. In general, for most of the topics , matlab codes are given. So, it is possible to practically simulate and understand the concepts. This is a good feature.

    2. If possible references may be added to get a better understand of some of the topics.

    3. Some areas, explanantion can be more clear. For example , I went through the convolution encoder. It is not clear how the generator polynomials are used.

    4. According to the formula given, the number of states in the state diagram is 2(m-1), where m is the number of memory element.
    For a (2,1,3) encoder, the number of memeory elements m is calculated as follows:
    L = k(m+1) -> 3 = 1(m+1) -> m=2
    Therefore, the number of states = 2(m-1) -> 2(2-1) = 2.
    But in the book, it is mentioned as 4 states. I am not sure if I am making any mistake. Please check.

    Reply
    • Hi Kalpa,
      Thanks for your inputs. I will improve the ebook and provide more clarity on the topics.

      Regarding the states, the equation is 2^{(m-1)} and not 2(m-1). That was a typo in printing. I will take care of that in the next edition. So that leaves us with 4 states.

      Reply
  29. I bought this book from iTune one week ago.  This book introduces simulation of communication systems from the beginning. It deeply attracts me. It includes digital communication, channel coding, inter-symbol interference, fading, digital modulations, OFDM and so on. This book covers all the basics of simulation of communication systems. I am hoping that authors can add some new technologies into it.

    Reply

Post your valuable comments !!!