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

📄 ofdm_map_ofdma.m

📁 OFDM到AFDMA的映射(matlab)
💻 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 + -