📄 ofdm_demap_ofdma.m
字号:
function BinDataOutFrame=OFDM_DeMap_OFDMA(EqualizedSymbolFrame,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
NFrameSymbol=length(EqualizedSymbolFrame);
if MODULATION_MOD==1|MODULATION_MOD==2 %% QPSK
EqualizedSymbolFrame=EqualizedSymbolFrame*sqrt(2);
elseif MODULATION_MOD==3|MODULATION_MOD==4 %% 16QAM
EqualizedSymbolFrame=EqualizedSymbolFrame*sqrt(10);
elseif MODULATION_MOD==5|MODULATION_MOD==6|MODULATION_MOD==7 %% 64QAM
EqualizedSymbolFrame=EqualizedSymbolFrame*sqrt(42);
end
RealPart=real(EqualizedSymbolFrame);
ImagPart=imag(EqualizedSymbolFrame);
if MODULATION_MOD==1|MODULATION_MOD==2 %% QPSK
BinDataOutFrame=zeros(1,NFrameSymbol*2);
for m=1:1:NFrameSymbol
if ( RealPart(m) <= 0 )
BinDataOutFrame( (m-1)*2+1)=1;
else
BinDataOutFrame( (m-1)*2+1)=0;
end
if ( ImagPart(m) <= 0 )
BinDataOutFrame( (m-1)*2+2)=1;
else
BinDataOutFrame( (m-1)*2+2)=0;
end
end
elseif MODULATION_MOD==3|MODULATION_MOD==4 %% 16QAM
BinDataOutFrame=zeros(1,NFrameSymbol*4);
for m=1:1:NFrameSymbol
if ( RealPart(m) <= -2 )
BinDataOutFrame( (m-1)*4+1)=1;
BinDataOutFrame( (m-1)*4+2)=1;
elseif ( -2 < RealPart(m) & RealPart(m) <= 0 )
BinDataOutFrame( (m-1)*4+1)=1;
BinDataOutFrame( (m-1)*4+2)=0;
elseif ( 0 < RealPart(m) & RealPart(m) <= 2 )
BinDataOutFrame( (m-1)*4+1)=0;
BinDataOutFrame( (m-1)*4+2)=0;
elseif ( 2 < RealPart(m) )
BinDataOutFrame( (m-1)*4+1)=0;
BinDataOutFrame( (m-1)*4+2)=1;
end
if ( ImagPart(m) <= -2 )
BinDataOutFrame( (m-1)*4+3)=1;
BinDataOutFrame( (m-1)*4+4)=1;
elseif ( -2 < ImagPart(m) & ImagPart(m) <= 0 )
BinDataOutFrame( (m-1)*4+3)=1;
BinDataOutFrame( (m-1)*4+4)=0;
elseif ( 0 < ImagPart(m) & ImagPart(m) <= 2 )
BinDataOutFrame( (m-1)*4+3)=0;
BinDataOutFrame( (m-1)*4+4)=0;
elseif ( 2 < ImagPart(m) )
BinDataOutFrame( (m-1)*4+3)=0;
BinDataOutFrame( (m-1)*4+4)=1;
end
end
elseif MODULATION_MOD==5|MODULATION_MOD==6|MODULATION_MOD==7 %% 64QAM
BinDataOutFrame=zeros(1,NFrameSymbol*6);
for m=1:1:NFrameSymbol
if ( RealPart(m) <= -6 )
BinDataOutFrame( (m-1)*6+1)=1;
BinDataOutFrame( (m-1)*6+2)=1;
BinDataOutFrame( (m-1)*6+3)=1;
elseif ( -6 < RealPart(m) & RealPart(m) <= -4 )
BinDataOutFrame( (m-1)*6+1)=1;
BinDataOutFrame( (m-1)*6+2)=1;
BinDataOutFrame( (m-1)*6+3)=0;
elseif ( -4 < RealPart(m) & RealPart(m) <= -2 )
BinDataOutFrame( (m-1)*6+1)=1;
BinDataOutFrame( (m-1)*6+2)=0;
BinDataOutFrame( (m-1)*6+3)=0;
elseif ( -2 < RealPart(m) & RealPart(m) <= 0 )
BinDataOutFrame( (m-1)*6+1)=1;
BinDataOutFrame( (m-1)*6+2)=0;
BinDataOutFrame( (m-1)*6+3)=1;
elseif ( 0 < RealPart(m) & RealPart(m) <= 2 )
BinDataOutFrame( (m-1)*6+1)=0;
BinDataOutFrame( (m-1)*6+2)=0;
BinDataOutFrame( (m-1)*6+3)=1;
elseif ( 2 < RealPart(m) & RealPart(m) <= 4 )
BinDataOutFrame( (m-1)*6+1)=0;
BinDataOutFrame( (m-1)*6+2)=0;
BinDataOutFrame( (m-1)*6+3)=0;
elseif ( 4 < RealPart(m) & RealPart(m) <= 6 )
BinDataOutFrame( (m-1)*6+1)=0;
BinDataOutFrame( (m-1)*6+2)=1;
BinDataOutFrame( (m-1)*6+3)=0;
elseif ( 6 < RealPart(m) )
BinDataOutFrame( (m-1)*6+1)=0;
BinDataOutFrame( (m-1)*6+2)=1;
BinDataOutFrame( (m-1)*6+3)=1;
end
if ( ImagPart(m) <= -6 )
BinDataOutFrame( (m-1)*6+4)=1;
BinDataOutFrame( (m-1)*6+5)=1;
BinDataOutFrame( (m-1)*6+6)=1;
elseif ( -6 < ImagPart(m) & ImagPart(m) <= -4 )
BinDataOutFrame( (m-1)*6+4)=1;
BinDataOutFrame( (m-1)*6+5)=1;
BinDataOutFrame( (m-1)*6+6)=0;
elseif ( -4 < ImagPart(m) & ImagPart(m) <= -2 )
BinDataOutFrame( (m-1)*6+4)=1;
BinDataOutFrame( (m-1)*6+5)=0;
BinDataOutFrame( (m-1)*6+6)=0;
elseif ( -2 < ImagPart(m) & ImagPart(m) <= 0 )
BinDataOutFrame( (m-1)*6+4)=1;
BinDataOutFrame( (m-1)*6+5)=0;
BinDataOutFrame( (m-1)*6+6)=1;
elseif ( 0 < ImagPart(m) & ImagPart(m) <= 2 )
BinDataOutFrame( (m-1)*6+4)=0;
BinDataOutFrame( (m-1)*6+5)=0;
BinDataOutFrame( (m-1)*6+6)=1;
elseif ( 2 < ImagPart(m) & ImagPart(m) <= 4 )
BinDataOutFrame( (m-1)*6+4)=0;
BinDataOutFrame( (m-1)*6+5)=0;
BinDataOutFrame( (m-1)*6+6)=0;
elseif ( 4 < ImagPart(m) & ImagPart(m) <= 6 )
BinDataOutFrame( (m-1)*6+4)=0;
BinDataOutFrame( (m-1)*6+5)=1;
BinDataOutFrame( (m-1)*6+6)=0;
elseif ( 6 < ImagPart(m) )
BinDataOutFrame( (m-1)*6+4)=0;
BinDataOutFrame( (m-1)*6+5)=1;
BinDataOutFrame( (m-1)*6+6)=1;
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -