Estimate Symbol Rate for General QAM Modulation in AWGN Channel
Transmit and receive data using a nonrectangular 16-ary constellation in the presence of Gaussian noise. Show the scatter plot of the noisy constellation and estimate the symbol error rate (SER) for two different SNRs.
Create a 16-QAM constellation based on the V.29 standard for telephone-line modems.
c = [-5 -5i 5 5i -3 -3-3i -3i 3-3i 3 3+3i 3i -3+3i -1 -1i 1 1i]; sigpower = pow2db(mean(abs(c).^2)); M = length(c);
Generate random symbols.
data = randi([0 M-1],2000,1);
Modulate the data by using the genqammod
function. General QAM modulation is necessary because the custom constellation is not rectangular.
modData = genqammod(data,c);
Pass the signal through an AWGN channel with a 20 dB SNR.
rxSig = awgn(modData,20,sigpower);
Display a scatter plot of the received signal and the reference constellation c
.
h = scatterplot(rxSig); hold on scatterplot(c,[],[],'r*',h) grid hold off
Demodulate the received signal by using the genqamdemod
function. Determine the number of symbol errors and the SER.
demodData = genqamdemod(rxSig,c); [numErrors,ser] = symerr(data,demodData)
numErrors = 4
ser = 0.0020
Repeat the transmission and demodulation process with an AWGN channel with a 10 dB SNR. Determine the SER for the reduced SNR. As expected, the performance degrades when the SNR is decreased.
rxSig = awgn(modData,10,sigpower); demodData = genqamdemod(rxSig,c); [numErrors,ser] = symerr(data,demodData)
numErrors = 457
ser = 0.2285