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

📄 mapping_siso_20.m

📁 A SISO 20M OFDM system based on IEEE802.11n standard, using Matlab.
💻 M
字号:
function dout = mapping_siso_20(din, Mode)

%----------------------------------------------------------------------
%         mapper
%
%       Mode    Data_rate    Coding_rate    BPSC    CBPS    DBPS
%        1         13(Mbps)     1/2          2       104      52
%        2       19.5           3/4          2       104      78
%        3         26           1/2          4       208     104
%        4         39           3/4          4       208     156
%        6       58.5           3/4          6       312     234
%        7         65           5/6          6       312     260
%
%       ex. map_dat = mapping_siso_20(Mode)
%----------------------------------------------------------------------

switch Mode
    case 1
        CBPS = 104;
    case 2
        CBPS = 104;
    case 3
        CBPS = 208;
    case 4
        CBPS = 208;
    case 6
        CBPS = 312;
    case 7
        CBPS = 312;
end

if Mode == 1 || Mode == 2
    J = 1;
    for I=1:2:CBPS
        if din(I) == 1 && din(I+1) == 1
            temp_i(J) = 0.707;
            temp_q(J) = 0.707;
        elseif din(I) == 1 && din(I+1) == 0
            temp_i(J) = 0.707;
            temp_q(J) = -0.707;
        elseif din(I) == 0 && din(I+1) == 1
            temp_i(J) = -0.707;
            temp_q(J) = 0.707;
        elseif din(I) == 0 && din(I+1) == 0
            temp_i(J) = -0.707;
            temp_q(J) = -0.707;
        end
        J = J + 1;
    end
elseif Mode == 3 || Mode == 4
    J = 1;
    for I=1:4:CBPS
        if din(I) == 0 && din(I+1) == 0
            temp_i(J) = -0.949;
        elseif din(I) == 0 && din(I+1) == 1
            temp_i(J) = -0.316;
        elseif din(I) == 1 && din(I+1) == 1
            temp_i(J) = 0.316;
        elseif din(I) == 1 && din(I+1) == 0
            temp_i(J) = 0.949;
        end
        if din(I+2) == 1 && din(I+3) == 0
            temp_q(J) = 0.949;
        elseif din(I+2) == 1 && din(I+3) == 1
            temp_q(J) = 0.316;
        elseif din(I+2) == 0 && din(I+3) == 1
            temp_q(J) = -0.316;
        elseif din(I+2) == 0 && din(I+3) == 0
            temp_q(J) = -0.949;
        end
        J = J + 1;
    end
elseif Mode == 6 || Mode == 7
    J = 1;
    for I=1:6:CBPS
        if din(I) == 0 && din(I+1) == 0 && din(I+2) == 0
            temp_i(J) = -1.078;
        elseif din(I) == 0 && din(I+1) == 0 && din(I+2) == 1
            temp_i(J) = -0.772;
        elseif din(I) == 0 && din(I+1) == 1 && din(I+2) == 1
            temp_i(J) = -0.463;
        elseif din(I) == 0 && din(I+1) == 1 && din(I+2) == 0
            temp_i(J) = -0.154;
        elseif din(I) == 1 && din(I+1) == 1 && din(I+2) == 0
            temp_i(J) = 0.154;
        elseif din(I) == 1 && din(I+1) == 1 && din(I+2) == 1
            temp_i(J) = 0.463;
        elseif din(I) == 1 && din(I+1) == 0 && din(I+2) == 1
            temp_i(J) = 0.772;
        elseif din(I) == 1 && din(I+1) == 0 && din(I+2) == 0
            temp_i(J) = 1.078;
        end
        if din(I+3) == 0 && din(I+4) == 0 && din(I+5) == 0
            temp_q(J) = -1.078;
        elseif din(I+3) == 0 && din(I+4) == 0 && din(I+5) == 1
            temp_q(J) = -0.772;
        elseif din(I+3) == 0 && din(I+4) == 1 && din(I+5) == 1
            temp_q(J) = -0.463;
        elseif din(I+3) == 0 && din(I+4) == 1 && din(I+5) == 0
            temp_q(J) = -0.154;
        elseif din(I+3) == 1 && din(I+4) == 1 && din(I+5) == 0
            temp_q(J) = 0.154;
        elseif din(I+3) == 1 && din(I+4) == 1 && din(I+5) == 1
            temp_q(J) = 0.463;
        elseif din(I+3) == 1 && din(I+4) == 0 && din(I+5) == 1
            temp_q(J) = 0.772;
        elseif din(I+3) == 1 && din(I+4) == 0 && din(I+5) == 0
            temp_q(J) = 1.078;
        end
        J = J + 1;
    end
end

dout = temp_i + i * temp_q;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -