Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Este ejemplo muestra cómo simular un sistema de comunicación básico en el que la señal se
modula en primer lugar mediante QPSK y luego se somete a multiplexación por división de
frecuencia ortogonal. La señal se pasa luego a través de un canal de ruido gaussiano blanco
adicional antes de ser demultiplexada y demodulada. Por último, se calcula el número de errores
de bit. El ejemplo muestra el uso de objetos de sistemas de MATLAB® ™.
M = 4; % Modulation alphabet
k = log2(M); % Bits/symbol
numSC = 128; % Number of OFDM subcarriers
cpLen = 32; % OFDM cyclic prefix length
maxBitErrors = 100; % Maximum number of bit errors
maxNumBits = 1e7; % Maximum number of bits transmitted
Se construye los objetos del sistema necesarios para la simulación: modulador QPSK,
demodulador QPSK, modulador OFDM, demodulador OFDM, canal AWGN y un calculador de tasa
de error. Use pares nombre-valor para establecer las propiedades del objeto.
qpskMod = comm.QPSKModulator('BitInput',true);
qpskDemod = comm.QPSKDemodulator('BitOutput',true);
ofdmMod = comm.OFDMModulator('FFTLength',numSC,'CyclicPrefixLength',cpLen);
ofdmDemod = comm.OFDMDemodulator('FFTLength',numSC,'CyclicPrefixLength',cpLen);
errorRate = comm.ErrorRate('ResetInputPort',true);
Usar la función de información del objeto 𝒐𝒇𝒅𝒎𝑴𝒐𝒅 para determinar las dimensiones de entrada
y salida del modulador OFDM.
ofdmDims = info(ofdmMod)
ofdmDims =
struct with fields:
DataInputSize: [117 1]
OutputSize: [160 1]
numDC = ofdmDims.DataInputSize(1)
numDC =
117
Determinar el tamaño de trama OFDM (en bits) a partir del número de subportadoras de datos
y el número de bits por símbolo.
EbNoVec = (0:10)';
snrVec = EbNoVec + 10*log10(k) + 10*log10(numDC/numSC);
Simular el enlace de comunicación sobre el rango de valores Eb/No. Para cada valor Eb/No, la
simulación se ejecuta hasta que se registran 𝒎𝒂𝒙𝑩𝒊𝒕𝑬𝒓𝒓𝒐𝒓𝒔 o el número total de bits transmitidos
excede 𝒎𝒂𝒙𝑵𝒖𝒎𝑩𝒊𝒕𝒔.
for m = 1:length(EbNoVec)
snr = snrVec(m);
Utilice la función berawgn para determinar la BER teórica para un sistema QPSK.
berTheory = berawgn(EbNoVec,'psk',M,'nondiff');
Grafique los datos teóricos y simulados en el mismo gráfico para compare resultados.
figure
semilogy(EbNoVec,berVec(:,1),'*')
hold on
semilogy(EbNoVec,berTheory)
legend('Simulation','Theory','Location','Best')
xlabel('Eb/No (dB)')
ylabel('Bit Error Rate')
grid on
hold off
figure
subplot(211)
plot(abs(qpskTx)); grid
title('Señal de banda base QPSK de Tx/Rx')
hold on
plot(abs(qpskRx))
% title('Señal de banda base QPSK de Rx')
legend('Señal de banda base QPSK de Tx','Señal de banda base QPSK de Rx')
hold off
subplot(212)
plot(abs(txSig)); grid
title('Señal OFDM de Tx/Rx, en el tiempo'); grid
hold on
plot(abs(rxSig)); grid
legend('Señal OFDM de Tx, en el tiempo', 'Señal OFDM de Rx, en el tiempo')
hold off
Observe que existe un buen acuerdo entre los datos simulados y teóricos.