function y = QAM_Demod(Y,Nbits); % y = QAM_Demod(Y,Nbits); % Ly = length(Y); Levels = 2^Nbits; % rescaling Scale = [0.7071; 1.5811; 3.2404; 6.5192]; Y = Y*Scale(Nbits); % **** decision slicer **** i = round(real(Y)+(Levels-1)/2); i(i<0) = 0; i(i>(Levels-1)) = Levels-1; q = round(imag(Y)+(Levels-1)/2); q(q<0) = 0; q(q>(Levels-1)) = Levels-1; % **** Gray decoding **** for n = 1:Ly, i(n) = GrayDecoding(i(n),Nbits); q(n) = GrayDecoding(q(n),Nbits); end; % **** interleaving **** y = zeros(1,2*Ly); y(1:2:2*Ly) = i; y(2:2:2*Ly) = q;