📄 mapear.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 + -