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

📄 get_llr.m

📁 B3g_phase2_C语言_Matlab程序及说明
💻 M
字号:
function LLR = get_llr( x ,Es)
% as;dfj
% 
% Map_16QAM=[ 1+j -1+j 1-j -1-j  3+j -3+j 3-j -3-j 1+3j -1+3j 1-3j -1-3j 3+3j -3+3j 3-3j -3-3j] / sqrt(10);
K = 4;
j = sqrt(-1);
LLR = zeros(K,length(x));    
x = x * sqrt(10/Es);
    
    % ---------- get soft information for 16QAM --------------    
        for i=1:length(x)
            if (real(x(i))<-2) yreal(i) = -3; 
            elseif (real(x(i))>=-2) & (real(x(i))<0) yreal(i) = -1;
            elseif (real(x(i))>=0) & (real(x(i))<=2) yreal(i) = 1;
            else yreal(i) = 3; end
            
            if (imag(x(i))<-2) yimag(i) = -3; 
            elseif (imag(x(i))>=-2) & (imag(x(i))<0) yimag(i) = -1;
            elseif (imag(x(i))>=0) & (imag(x(i))<=2) yimag(i) = 1;
            else yimag(i) = 3; end
        end
        
        for i=1:length(x)
            % point 1111
            if (yreal(i) == -3) & (yimag(i) == -3)
                b41(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b40(i) = abs(x(i) - (1-3*j))^2;
                b31(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b30(i) = abs(x(i) - (-3+j))^2;
                b21(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b20(i) = abs(x(i) - (-1-3*j))^2;
                b11(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b10(i) = abs(x(i) - (-3-j))^2;
            end;
            % point 0111
            if (yreal(i) == -3) & (yimag(i) == -1)
                b41(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b40(i) = abs(x(i) - (1-j))^2;
                b31(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b30(i) = abs(x(i) - (-3+j))^2;
                b21(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b20(i) = abs(x(i) - (-1-j))^2;
                b10(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b11(i) = abs(x(i) - (-3-3*j))^2;
            end;
            % point 0101
            if (yreal(i) == -3) & (yimag(i) == 1)
                b41(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b40(i) = abs(x(i) - (1+j))^2;
                b30(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b31(i) = abs(x(i) - (-3-j))^2;
                b21(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b20(i) = abs(x(i) - (-1+j))^2;
                b10(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b11(i) = abs(x(i) - (-3+3*j))^2;
            end;
            % point 1101
            if (yreal(i) == -3) & (yimag(i) == 3)
                b41(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b40(i) = abs(x(i) - (1+3*j))^2;
                b30(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b31(i) = abs(x(i) - (-3-j))^2;
                b21(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b20(i) = abs(x(i) - (-1+3*j))^2;
                b11(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b10(i) = abs(x(i) - (-3+j))^2;
            end;
            % point 1011
            if (yreal(i) == -1) & (yimag(i) == -3)
                b41(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b40(i) = abs(x(i) - (1-3*j))^2;
                b31(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b30(i) = abs(x(i) - (-1+j))^2;
                b20(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b21(i) = abs(x(i) - (-3-3*j))^2;
                b11(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b10(i) = abs(x(i) - (-1-j))^2;
            end;
            % point 0011
            if (yreal(i) == -1) & (yimag(i) == -1)
                b41(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b40(i) = abs(x(i) - (1-j))^2;
                b31(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b30(i) = abs(x(i) - (-1+j))^2;
                b20(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b21(i) = abs(x(i) - (-3-j))^2;
                b10(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b11(i) = abs(x(i) - (-1-3*j))^2;
            end;
            % point 0001
            if (yreal(i) == -1) & (yimag(i) == 1)
                b41(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b40(i) = abs(x(i) - (1+j))^2;
                b30(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b31(i) = abs(x(i) - (-1-j))^2;
                b20(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b21(i) = abs(x(i) - (-3+j))^2;
                b10(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b11(i) = abs(x(i) - (-1+3*j))^2;
            end;
            % point 1001
            if (yreal(i) == -1) & (yimag(i) == 3)
                b41(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b40(i) = abs(x(i) - (1+3*j))^2;
                b30(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b31(i) = abs(x(i) - (-1-j))^2;
                b20(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b21(i) = abs(x(i) - (-3+3*j))^2;
                b11(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b10(i) = abs(x(i) - (-1+j))^2;
            end;
            % point 1010
            if (yreal(i) == 1) & (yimag(i) == -3)
                b40(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b41(i) = abs(x(i) - (-1-3*j))^2;
                b31(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b30(i) = abs(x(i) - (1+j))^2;
                b20(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b21(i) = abs(x(i) - (3-3*j))^2;
                b11(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b10(i) = abs(x(i) - (1-j))^2;
            end;
            % point 0010
            if (yreal(i) == 1) & (yimag(i) == -1)
                b40(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b41(i) = abs(x(i) - (-1-j))^2;
                b31(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b30(i) = abs(x(i) - (1+j))^2;
                b20(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b21(i) = abs(x(i) - (3-j))^2;
                b10(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b11(i) = abs(x(i) - (1-3*j))^2;
            end;
            % point 0000
            if (yreal(i) == 1) & (yimag(i) == 1)
                b40(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b41(i) = abs(x(i) - (-1+j))^2;
                b30(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b31(i) = abs(x(i) - (1-j))^2;
                b20(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b21(i) = abs(x(i) - (3+j))^2;
                b10(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b11(i) = abs(x(i) - (1+3*j))^2;
            end;
            % point 1000
            if (yreal(i) == 1) & (yimag(i) == 3)
                b40(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b41(i) = abs(x(i) - (-1+3*j))^2;
                b30(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b31(i) = abs(x(i) - (1-j))^2;
                b20(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b21(i) = abs(x(i) - (3+3*j))^2;
                b11(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b10(i) = abs(x(i) - (1+j))^2;
            end;
            % point 1110
            if (yreal(i) == 3) & (yimag(i) == -3)
                b40(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b41(i) = abs(x(i) - (-1-3*j))^2;
                b31(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b30(i) = abs(x(i) - (3+j))^2;
                b21(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b20(i) = abs(x(i) - (1-3*j))^2;
                b11(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b10(i) = abs(x(i) - (3-j))^2;
            end;
            % point 0110
            if (yreal(i) == 3) & (yimag(i) == -1)
                b40(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b41(i) = abs(x(i) - (-1-j))^2;
                b31(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b30(i) = abs(x(i) - (3+j))^2;
                b21(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b20(i) = abs(x(i) - (1-j))^2;
                b10(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b11(i) = abs(x(i) - (3-3*j))^2;
            end;
            % point 0100
            if (yreal(i) == 3) & (yimag(i) == 1)
                b40(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b41(i) = abs(x(i) - (-1+j))^2;
                b30(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b31(i) = abs(x(i) - (3-j))^2;
                b21(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b20(i) = abs(x(i) - (1+j))^2;
                b10(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b11(i) = abs(x(i) - (3+3*j))^2;
            end;
            % point 1100
            if (yreal(i) == 3) & (yimag(i) == 3)
                b40(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b41(i) = abs(x(i) - (-1+3*j))^2;
                b30(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b31(i) = abs(x(i) - (3-j))^2;
                b21(i) = abs(x(i) - yreal(i) -j*yimag(i))^2;
                b20(i) = abs(x(i) - (1+3*j))^2;
                b11(i) = abs(x(i) - yreal(i) -j*yimag(i))^2; 
                b10(i) = abs(x(i) - (3+j))^2;
            end;
        end
        
        LLR(1,:) = b10 -b11;
        LLR(2,:) = b20 -b21;
        LLR(3,:) = b30 -b31;
        LLR(4,:) = b40 -b41;
       
        
       % LLR = LLR / 2 / (sigma^2);
        
        
        clear b40 b41 b30 b31 b20 b21 b10 b11 yreal yimag;
        
        
        LLR = reshape(LLR, 1, K*length(x));

⌨️ 快捷键说明

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