|
RENEWLab
1.1.0
RENEW project
|
Functions | |
| if | mod (nbits, sym_bits) ~=0error("Length of bit stream has to be divisible by sym_bits") |
| 1/sqrt(2 | modvec_bpsk () |
| mod_fcn_16qam, data | arrayfun () |
| otherwise | fprintf ('Invalid MOD_ORDER(%d)! Must be in[2, 4, 16, 64]\n', MOD_ORDER) |
| end Plot constellation if do_plot | figure (1) ln_clr |
| line ([-1.5, 1.5], [0 0], 'LineStyle', '-', 'Color', ln_clr, 'LineWidth', 1) | |
| else | plot (syms(:), 0,' *', 'MarkerSize', 16, 'LineWidth', 2) |
| axis (1.5 *[-1 1 -1 1]) | |
| xlabel ('Inphase') | |
| ylabel ('Quadrature') | |
| title ('Constellation') | |
Variables | |
| Author(s) | nbits = length(bitstream) |
| Do | yourselves |
| end bits to integer numbers | bit_mat = reshape(bitstream, sym_bits, [])' |
| data = bi2de(bit_mat, 'left-msb') | |
| modvec_16qam = (1/sqrt(10)) .* [-3 -1 +3 +1] | |
| modvec_64qam = (1/sqrt(42)) .* [-7 -5 -1 -3 +7 +5 +1 +3] | |
| mod_fcn_bpsk = @(x) complex(modvec_bpsk(1+x),0) | |
| mod_fcn_qpsk = @(x) complex(modvec_bpsk(1+bitshift(x, -1)), modvec_bpsk(1+mod(x, 2))) | |
| mod_fcn_16qam = @(x) complex(modvec_16qam(1+bitshift(x, -2)), modvec_16qam(1+mod(x,4))) | |
| mod_fcn_64qam = @(x) complex(modvec_64qam(1+bitshift(x, -3)), modvec_64qam(1+mod(x,8))) | |
| Map the data values on to complex symbols switch MOD_ORDER case BPSK | syms = arrayfun(mod_fcn_bpsk, data) |
| return | |
| grid | on |
| if | MOD_ORDER |
| end axis | square |
| hold | off |
|
virtual |
| axis | ( | 1.5 * | [-1 1 -1 1] | ) |
| line | ( | 'LineStyle' | , |
| '-' | , | ||
| 'Color' | , | ||
| ln_clr | , | ||
| 'LineWidth' | , | ||
| 1 | |||
| ) |

|
virtual |
| else plot | ( | syms(:) | , |
| 0 | , | ||
| ' *' | , | ||
| 'MarkerSize' | , | ||
| 16 | , | ||
| 'LineWidth' | , | ||
| 2 | |||
| ) |
| title | ( | 'Constellation' | ) |
| xlabel | ( | 'Inphase' | ) |
| ylabel | ( | 'Quadrature' | ) |
| mod_fcn_16qam = @(x) complex(modvec_16qam(1+bitshift(x, -2)), modvec_16qam(1+mod(x,4))) |
| mod_fcn_64qam = @(x) complex(modvec_64qam(1+bitshift(x, -3)), modvec_64qam(1+mod(x,8))) |
| mod_fcn_bpsk = @(x) complex(modvec_bpsk(1+x),0) |
| mod_fcn_qpsk = @(x) complex(modvec_bpsk(1+bitshift(x, -1)), modvec_bpsk(1+mod(x, 2))) |
| modvec_16qam = (1/sqrt(10)) .* [-3 -1 +3 +1] |
| modvec_64qam = (1/sqrt(42)) .* [-7 -5 -1 -3 +7 +5 +1 +3] |
| hold off |
| hold on |
| return |
| axis square |
| case QPSK syms = arrayfun(mod_fcn_bpsk, data) |
| Do yourselves |