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

📄 ofdm_demap_ofdma.m

📁 OFDA到AFOMA的解映射(matlab)
💻 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 + -