I know the way to generate QPSK signals using the following
TxS=round(rand(1,N))*2-1; % QPSK symbols are transmitted symbols
TxS=TxS+sqrt(-1)*(round(rand(1,N))*2-1);
In the above, the symbols are 2 alphabets +1/-1. But I cannot understand how to generate 16- Quadrature Amplitude Modulation signal for the same alphabet space? Is it possible? Or what is the usual way for generating ?
Also, is it a practice to work with complex signals and not real ?
Take a look at this: http://www.mathworks.com/help/comm/ref/comm.rectangularqamdemodulator-class.html
hMod = comm.RectangularQAMModulator('ModulationOrder',16);
dataIn = randi([0 15],10000,1);
txSig = step(hMod,dataIn);
You can also use:
TxS = (randi(4,N,1)*2-5)+i*(randi(4,N,1)*2-5)
Yes, it's usual to work with complex numbers (representing the I/Q (in-phase/quadrature) plane) rather than real numbers. This comes from the fact that in software defined radio, you typically consider the complex base band.
Of course, you cannot represent 16 points with only two dimensions and two values in each of these. You might want to read up on digital comms theory.
来源:https://stackoverflow.com/questions/30403517/generate-16-qam-signal