⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapear.m

📁 802.16-wimax系统物理层的仿真代码
💻 M
字号:
function datos_mapeados = mapear( datos_interleaving, n_mod_tipo,Tx)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                                                                       %
%%       Nombre: mapear.m                                                %
%%                                                                       %
%%       Funci髇: Recibe el n鷐ero de bits a modular y el tipo de        %
%%         modulaci髇 a usar (1=BPSK,2=QPSK,4=16QAM,6=64QAM).            %
%%                                                                       %
%%       Salida: Una matriz con los simbolos mapeados seg鷑 la           %
%%          constelaci髇 usada, que depende del tipo de modulaci髇       %
%%          requerida.                                                   %
%%                                                                       %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Ahora, dependiendo de la modulaci髇 a usar, defino a mi gusto
% una constelaci髇 u otra. Son las constelaciones que la norma indica.
    
[M,M1,M2,tipo_mapeo,c] = parametros_constelacion(n_mod_tipo);
alfabeto = bit_simbolo(M,tipo_mapeo,M1,M2);

if n_mod_tipo~=1
    constelacion_gray = alfabeto(:,3) + j*alfabeto(:,2);
else
    constelacion_gray = [0 1]';
end

l = length(datos_interleaving);

% Una vez creada la constelaci髇 que me interesa, realizo el proceso de 
% mapeo o demapeo correpondiente.

if Tx==1
    % En caso de querer mapear los bits recibidos, necesito tener el vector 
    % entrada en forma de matriz con tantas columnas como bits tenga un s韒bolo.
 
    matriz_datos = reshape (datos_interleaving,n_mod_tipo,l/n_mod_tipo);
    m_datos_decimal = bi2de (matriz_datos','left-msb');
 
    % Ahora voy tomando cada valor de cada fila de la matriz y la mapeo con la
    % constelaci髇 que he definido anteriormente.

    for i=1:(l/n_mod_tipo)
        v_datos_decimal = m_datos_decimal (i);

        % Los codifico de la forma dn=an+j*bn, seg鷑 mi constelaci髇 de Gray
        v_codifico = genqammod(v_datos_decimal,constelacion_gray);

        % Los coloco en la matriz donde voy a tener todos los s韒bolos por columnas
        salida(:,i) = v_codifico;
    end

    % Multiplico el resultado por el factor 'c' definido en la norma.
    datos_mapeados = c.*salida;
    
elseif Tx==0
    % Para que todos los valores sean coherentes, debo empezar por dividir 
    % el vector inicial por el factor 'c' definido en la norma.
    datos_normalizados = datos_interleaving ./ c;
   
    % Ahora debo realizar el inverso del proceso del mapeo.
    
    for i=1:l
        v_datos_mapeados = datos_normalizados (i);

        % Los decodifico y los transforma de dn=an+j*bn a n鷐eros binarios, seg鷑 
        % mi constelaci髇 de Gray
        v_decodifico = genqamdemod(v_datos_mapeados,constelacion_gray);

        % Los coloco en la matriz donde voy a tener todos los s韒bolos por columnas
        datos_decimal(:,i) = v_decodifico;
        datos_mapeados = de2bi(datos_decimal,n_mod_tipo,'left-msb')';
        datos_mapeados = datos_mapeados(:)';
    end
end
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -