+ Post New Thread
Results 1 to 2 of 2
-
7th June 2019, 04:07 #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
-
Advertisement
-
9th June 2019, 21:54 #2
- Join Date
- Mar 2005
- Location
- California, USA
- Posts
- 4,704
- Helped
- 1038 / 1038
- Points
- 24,502
- Level
- 38
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”.
+ Post New Thread
Please login