📄 ofdm_map_ofdma.m
字号:
function Mapped_Code=OFDM_Map_OFDMA(Interleaved_Code,MODULATION_MOD)
%%%%%%%%%%%%% A simulation for OFDMA specified in IEEE 802.16e
%%%%%%%%%%%%% OFDMA DeMap
%%%%%%%%%%%%% CP ,2005.3.23
%if MODULATION_MOD==1 then using QPSK,CC coding rate=1/2
%if MODULATION_MOD==2 then using QPSI_Data,CC coding rate=3/4
%if MODULATION_MOD==3 then using 16-QAM,CC coding rate=1/2
%if MODULATION_MOD==4 then using 16-QAM,CC coding rate=3/4
%if MODULATION_MOD==5 then using 64-QAM,CC coding rate=1/2
%if MODULATION_MOD==6 then using 64_QAM,CC coding rate=2/3
%if MODULATION_MOD==7 then using 64_QAM,CC coding rate=3/4
Sequence_Length=length(Interleaved_Code);
if MODULATION_MOD==1|MODULATION_MOD==2 %%QPSK
j=1;
while j<=Sequence_Length
if Interleaved_Code(j)==0
I_Data=1;
else I_Data=-1;
end;
j=j+1;
if Interleaved_Code(j)==0
Q_Data=1;
else Q_Data=-1;
end;
Mapped_Code(j/2)=(I_Data+i*Q_Data)/sqrt(2);
j=j+1;
end;
elseif MODULATION_MOD==3|MODULATION_MOD==4 %%16QAM
j=1;
while j<=Sequence_Length
if Interleaved_Code(j)==0
if Interleaved_Code(j+1)==0
I_Data=1;
else I_Data=3;
end;
else
if Interleaved_Code(j+1)==1
I_Data=-3;
else I_Data=-1;
end;
end;
if Interleaved_Code(j+2)==0
if Interleaved_Code(j+3)==0
Q_Data=1;
else Q_Data=3;
end;
else
if Interleaved_Code(j+3)==1;
Q_Data=-3;
else Q_Data=-1;
end;
end;
Mapped_Code((j+3)/4)=(I_Data+i*Q_Data)/sqrt(10);
j=j+4;
end;
elseif MODULATION_MOD==6|MODULATION_MOD==5|MODULATION_MOD==7 %%64QAM
j=1;
while j<=Sequence_Length
if Interleaved_Code(j)==0
if Interleaved_Code(j+1)==0
if Interleaved_Code(j+2)==0
I_Data=3;
else I_Data=1;
end;
else
if Interleaved_Code(j+2)==1
I_Data=7;
else I_Data=5;
end;
end;
else
if Interleaved_Code(j+1)==1
if Interleaved_Code(j+2)==0
I_Data=-5;
else I_Data=-7;
end;
else
if Interleaved_Code(j+2)==1
I_Data=-1;
else I_Data=-3;
end;
end;
end;
if Interleaved_Code(j+3)==0
if Interleaved_Code(j+4)==0
if Interleaved_Code(j+5)==0
Q_Data=3;
else Q_Data=1;
end;
else
if Interleaved_Code(j+5)==1
Q_Data=7;
else Q_Data=5;
end;
end;
else
if Interleaved_Code(j+4)==1
if Interleaved_Code(j+5)==0
Q_Data=-5;
else Q_Data=-7;
end;
else
if Interleaved_Code(j+5)==1
Q_Data=-1;
else Q_Data=-3;
end;
end;
end;
Mapped_Code((j+5)/6)=(I_Data+i*Q_Data)/sqrt(42);
j=j+6;
end;
else
error('Error in Mapping');
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -