64 QAM mapping
m=1;
for k=-7:2:7
for l=-7:2:7
mapping_vector(m) = (k+j*l)/sqrt(42);
m=m+1;
end;
end;
mapping_vector = mapping_vector(...
[[ 0 1 3 2 7 6 4 5]...
8+[ 0 1 3 2 7 6 4 5]...
24+[ 0 1 3 2 7 6 4 5]...
16+[ 0 1 3 2 7 6 4 5]...
56+[ 0 1 3 2 7 6 4 5]...
48+[ 0 1 3 2 7 6 4 5]...
32+[ 0 1 3 2 7 6 4 5]...
40+[ 0 1 3 2 7 6 4 5]]+1);
index = [32 16 8 4 2 1]*bit_to_mod ;
sym = mapping_vector(index + 1);
Added after 40 seconds:
bit0 = real(sym);
bit3 = imag(sym);
bit1 = 4/sqrt(42)-abs(real(sym));
bit4 = 4/sqrt(42)-abs(imag(sym));
for m=1:size(sym,2)
for k=1:size(sym,1)
if abs(4/sqrt(42)-abs(real(sym(k,m)))) <= 2/sqrt(42)
bit2(k,m) = 2/sqrt(42) - abs(4/sqrt(42)-abs(real(sym(k,m))));
elseif abs(real(sym(k,m))) <= 2/sqrt(42)
bit2(k,m) = -2/sqrt(42) + abs(real(sym(k,m)));
else
bit2(k,m) = 6/sqrt(42)-abs(real(sym(k,m)));
end;
if abs(4/sqrt(42)-abs(imag(sym(k,m)))) <= 2/sqrt(42)
bit5(k,m) = 2/sqrt(42) - abs(4/sqrt(42)-abs(imag(sym(k,m))));
elseif abs(imag(sym(k,m))) <= 2/sqrt(42)
bit5(k,m) = -2/sqrt(42) + abs(imag(sym(k,m)));
else
bit5(k,m) = 6/sqrt(42)-abs(imag(sym(k,m)));
end;
end;
end;
bit_out(1,
= bit0 > 0;
bit_out(2,
= bit1 > 0;
bit_out(3,
= bit2 > 0;
bit_out(4,
= bit3 > 0;
bit_out(5,
= bit4 > 0;
bit_out(6,
= bit5 > 0;