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

📄 mmse.m

📁 这是一个vblast程序
💻 M
字号:
function LLR_value=MMSE(rec_sig,channel_matrix,noise_var,mapping)
[R_Antenna,T_Antenna,sig_length]=size(channel_matrix);
M=length(mapping);
K=log2(M);
LLR_value=zeros(sig_length,T_Antenna*K);   %比特级似然值
for i1=1:sig_length
    single_ch_m=channel_matrix(:,:,i1);
    single_sig=rec_sig(:,i1);
    single_LLR_value=zeros(T_Antenna,K);
    MMSE_Matrix=single_ch_m'*inv(single_ch_m*single_ch_m'+noise_var*eye(R_Antenna));
    soft_value_vector=MMSE_Matrix*single_sig;
    noise_var_change_vector=noise_var*sum(abs(MMSE_Matrix).^2,2);
    %%%%%%%%%%%%%%%%%% 计算比特级似然值 %%%%%%%%%%%%%%%%%%%%%%%%%
    temp=[0:M-1];
    bit_map=de2bi(temp,K,'left-msb');
    soft_value_Matrix=repmat(soft_value_vector,1,M/2);   
    mapping_Matrix=repmat(mapping,T_Antenna,1);
    noise_var_change_Matrix=repmat(noise_var_change_vector,1,M/2);
    for i3=1:K
        Index_bit_1=find(bit_map(:,i3)==1);
        Index_bit_0=find(bit_map(:,i3)==0);
        Prob_1=-abs(soft_value_Matrix-mapping_Matrix(:,Index_bit_1)).^2./noise_var_change_Matrix;
        Prob_0=-abs(soft_value_Matrix-mapping_Matrix(:,Index_bit_0)).^2./noise_var_change_Matrix;   
        %判断语句是为了防止高信噪比下出现溢出的情况
        Prob_1(find(Prob_1<-1e300))=-1e300;
        Prob_0(find(Prob_0<-1e300))=-1e300;
        single_LLR_value(:,i3)=max(Prob_1,[],2)-max(Prob_0,[],2);    % 采用了log(exp(x)+exp(y))=max(x,y)的近似公式,有效的避免了计算溢出。
    end;    
    LLR_value(i1,:)=single_LLR_value(:)';
end;
LLR_value=LLR_value.';
LLR_value=LLR_value(:).';
%此步即为了控制似然值的范围
for i1=1:sig_length*T_Antenna*K 
    if LLR_value(1,i1)>10
       LLR_value(1,i1)=10;
    end;
    if LLR_value(1,i1)<-10
       LLR_value(1,i1)=-10;
    end;   
end;

⌨️ 快捷键说明

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