+ Post New Thread
Results 1 to 2 of 2
  1. #1
    Newbie level 1
    Points: 17, Level: 1

    Join Date
    Jun 2019
    Posts
    1
    Helped
    0 / 0
    Points
    17
    Level
    1

    Please help me this code which 64 QAM MATLAB CODE.

    Dear all;

    Please look at this MATLAB code and help me to find error.

    Code dot - [expand]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    
    N = 20*10^3; % number of symbols 
    M = 64; % size 
    k = log2(M); % bits/symbol
     
    % for 16-QAM 
    Re = [-(2*sqrt(M)/2-1):2:-1 1:2:2*sqrt(M)/2-1];
     
    Im = [-(2*sqrt(M)/2-1):2:-1 1:2:2*sqrt(M)/2-1];
     
    k_QAM = 1/sqrt(10);
     
    bdB = 3:1:13; % SNR range
     
    sdB = bdB + 10*log10(k);
     
    % binary to gray code
     
    a = (0:k-1);
     
    map = bitxor(a,floor(a/2));
     
    [tt, ind] = sort(map);
     
    for i = 1:length(bdB) 
    c = rand(1,N*k,1)>0.5; % random 1's and 0's 
    d = reshape(c,k,N).'; 
    bd = ones(N,1)*(2.^((k/2-1):-1:0)) ; % conversion from binary to decimal
     
    % real 
     
    cRe = d(:,(1:k/2)); 
    e = sum(cRe.*bd,2); 
    f = bitxor(e,floor(e/2)); 
     
    % imaginary 
    cIm = d(:,(k/2+1:k)); 
    g = sum(cIm.*bd,2); 
    h = bitxor(g,floor(g/2)); 
     
    % mapping the Gray coded symbols into constellation 
    modRe = Re(f+1); 
    modIm = Im(h+1); 
     
    % constellation 
     
    mod = modRe + 1i*modIm; 
    s = k_QAM*mod; 
     
    % noise 
     
    n = 1/sqrt(2)*(randn(1,N) + 1i*randn(1,N)); 
     
    % reciever 
    r = s + 10^(-sdB(i)/20)*n;
     
    % demodulation 
     
    r_re = real(r)/k_QAM; 
    r_im = imag(r)/k_QAM;
     
    % rounding off 
     
     
    m = 2*floor(r_re/2)+1; 
    m(m>max(Re)) = max(Re); 
    m(m<min(Re)) = min(Re); 
     
    n= 2*floor(r_im/2)+1; 
    n(n>max(Im)) = max(Im); 
    n(n<min(Im)) = min(Im);
     
    % To Decimal conversion 
     
    oRe = ind(floor((m+8)/4+1))-1; 
    oIm = ind(floor((n+8)/4+1))-1;
     
    % To binary string 
    pRe = dec2bin(oRe,k/2); 
    pIm = dec2bin(oIm,k/2);
     
    % binary string to number 
    pRe = pRe.'; 
    pRe = pRe(1:end).'; 
    pRe = reshape(str8num(pRe).',k/4,N).' ; 
     
    pIm = pIm.'; 
    pIm = pIm(1:end).'; 
    pIm = reshape(str8num(pIm).',k/8,N).' ;
     
    % counting errors for real and imaginary 
    Err(r) = size(find((cRe - pRe)),1) + size(find((cIm - pIm)),1) ;
     
    end 
    sBer = Error/(N*k); 
    tBer = (1/k)*3/2*erfc(sqrt(k*0.05*(10.^(bdB/10))));
     
    % plot 
    figure 
    semilogy(bdB,tBer,'rs-','LineWidth',2); 
    hold on 
    semilogy(bdB,sBer,'kx-','LineWidth',2); 
    grid on 
    legend('theory', 'simulation'); 
    xlabel('SNR dB') 
    ylabel('Bit Error Rate') 
    title('BER VS SNR')
    Last edited by BradtheRad; 7th June 2019 at 04:27. Reason: Put code in formatted window

    •   AltAdvertisement

        
       

  2. #2
    Advanced Member level 5
    Points: 24,267, Level: 37
    barry's Avatar
    Join Date
    Mar 2005
    Location
    California, USA
    Posts
    4,654
    Helped
    1031 / 1031
    Points
    24,267
    Level
    37

    Re: Please help me this code which 64 QAM MATLAB CODE.

    The error is that you posted an arcane block of code with no explanation of what it’s supposed to do, what your problem is, or ANYTHING useful, and then you expect us to “find the error”.



--[[ ]]--