¿Quién puede decirme el significado detallado de este programa matlab, que requiere comentar cada párrafo?
clc
N_ofdm = 2048%Los puntos OFDM son 2048.
f _ delta = 15 E3; el % de espacio entre subportadoras es 15k, que en realidad no se utiliza en el código.
n_block = 1000; % volumen analógico máximo
n_subcarrier = 1320; Porcentaje de subportadoras disponibles
n_CP = 144;% longitud CP
symbol_number = 14; Porcentaje de símbolos OFDM por transmisión
conv_poly=;% código convolucional generando polinomio
k = 5 %Longitud de restricción del código convolucional
trel; =poly2trellis(K,conv_poly);%Generar diagrama de cuadrícula de código convolucional
tail = 0(1,K- 1); Agregar % de bits de cola para poner a cero el codificador de código convolucional
mod); _ grado = 4; modulación %16QAM
código _ tasa = 0,5% tasa de código
tb_len = 50% de longitud de rastreo del decodificador Viterbi
bit_length = mod_grado * code_rate * N_subcarrier * Symbol_number-K+1; %según La configuración de parámetros anterior puede obtener el número total de bits de información que puede transportar un bloque de datos.
SNR _ db = 0:1:10 % establece el rango de relación señal-ruido analógico.
Relación señal-ruido=10. ^(snr_db/10); %Convierte la relación señal-ruido a un valor natural.
ber = cero (1, longitud (SNR)); % de espacio de almacenamiento de tasa de error de inicialización
bler = cero (1, longitud (SNR));
h1=modem.qammod('m',2^mod_title,'inputtype','bit','symoblorder','gray'); %Generar objeto de modulación QAM, el tipo de entrada es entrada de bits , El orden de los símbolos es Mapa de grises.
h2=modem.qamdemod(h1,'OutputType','bit','DecisionType','approximatellr',...NoiseVariance',1); %Generar objeto de demodulación QAM y seleccionar demodulación de juicio suave. forma. Porque la posición de variación de ruido en este momento se establece temporalmente en 1.
Para loop_snr=1: longitud (snr)
err = 0;
err _ blk = 0
sigma = sqrt; (1/SNR(loop_SNR)/2);
Para loop_block=1:N_block%, el código omitido aquí es el proceso de procesamiento de cada marco de datos, que se describirá en detalle a continuación.
Fin
ber(loop _ SNR)= err/(bit _ length * loop _ block
bler(loop _ SNR)= err _); blk/loop_block;
Fin
for bloque de bucle=1:N bloque
fuente=randsrc(1, bit_length, [0, 1]) ;% Fuente generada
code=convenc([source, tail], trel); %Codificación convolucional, estado puesto a cero
symbol=modulate(h1, code'); modulado con el objeto de modulación h1.
Símbolo = símbolo/3.1622; % de normalización de la energía del símbolo de la subportadora
transmit_data = zero(1, Symbol_number *(N_CP+N_OFDM) % Enviar inicialización de muestra en el dominio del tiempo
for loop _ símbolo = 1:symbol _ % período de símbolo OFDM, cada período genera todas las muestras en el dominio del tiempo de un símbolo OFDM.
freq_domain=zeros(1,N_OFDM);% inicialización de datos en el dominio de frecuencia
freq_domain((N_OFDM-N_subcarrier)/2+1:(N _ OFDM-Nsubcarrier)/2+ N_subcarrier)= símbolo((loop_symbol-1)* N_subcarrier+1:loop_symbol * N_subcarrier % mapeo de subportadora, mapeado a la subportadora N_subcarrier en el medio superior.
time _ domain = IFFT(freq _ domain)* sqrt(N _ OFDM); %IFFT implementa la modulación OFDM y presta atención a la normalización de energía.
transmitir _ datos((bucle _ símbolo-1)*(N _ CP+N _ OFDM)+1:bucle _ símbolo *(N _ CP+N _ OFDM))=[tiempo_dominio (N_OFDM-N_CP+1:N_OFDM), dominio_tiempo];% más CP
Fin
datos_recibidos = datos_transmitir+(randn(1, longitud (datos-transmitir)) + j * randn (1, longitud (transmitir _ datos))) * sigma % agrega ruido para obtener una señal aceptable.
símbolo de bucle for=1: número de símbolo
de _ CP = datos _ recibidos((bucle _ símbolo-1)*(N _ CP+N _ OFDM)+N _ CP+1:loop_symbol *(N_CP+N_OFDM));%deleteCP
FFT_data = FFT(de_CP)/sqrt(N_OFDM);%FFT, Normalización de energía
de mapp_data ((bucle _ símbolo-1)* N _ subportadora+1:bucle _ símbolo * N _ subportadora)= FFT _ datos((N _ OFDM-N _ subportadora)/2+1:(N _ OFDM-N _ subportadora )/2+N _ subportadora); % desasignación
Fin
h2. varianza de ruido = sigma * sigma * 3.1622 * 3.1622 %Restablece el parámetro de varianza de ruido del objeto de demodulación.
data _ demodulation = demodulation (h2, de mapp _ data * 3.1622 % de demodulación suave, tenga en cuenta que antes de la demodulación, la señal debe volver a convertirse a la constelación original de acuerdo con los requisitos del objeto de demodulación.
temp 1 = size(data_demudulated);
data_demudulated=reshape(data_demudulated, 1, templ(1)* templ(2) % suavizará la matriz de la entrada demodulada; está organizado en vectores de fila.
decisión = vit dex(data_demod, trel, tb_len, 'term', 'un quant'); decodificación de Viterbi con % de descuantificación
decisión = decisión (1: longitud (fuente) )); % bits eliminados
err=err+sum (decisión~ = fuente % errores estadísticos
If(sum(decisión~=fuente)~=0)% cuenta); el número de bloques de error.
err_blk+err_blk+1;
Fin
if(err_blk>=10)% error 10 bloques detienen el mensaje Simulación bajo relación de ruido.
Pausa;
Fin
Fin
semilogía(SNR_dB,ber,'-^')
Cuadrícula en
xlabel(' SNR(dB)');
ylable(' BER ');