blast_nerr_rx1.m

来自「用MATLAB编写的MIMO系统中的BLAST系统的接收程序」· M 代码 · 共 43 行

M
43
字号
function[y]=blast_Nerr_rx1(com_para,mod_b,r,HW,dec_order)
%%%  无错误传播  固定调制  

%%%%%%%%%% 修改纪录
%2005/01/25        % rx_modulate_3 变为rx_modulate_4, 可以调制4096QAM
%2005/07/08       在blast_ant_select_vblast_rx基础上改为有错误传播
%2006/03/22       在blast_ant_select_vblast_rx2基础上去掉天线选择
%2006/05/30        %毕业后整理完善 

%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Mt=com_para.Mt;             %发射天线数
Mr=com_para.Mr;            %接收天线数
rt=com_para.rt;            %发射比特总数
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

temp_HW=HW;
temp_r=r;
y=zeros(rt,1);
temp_y=zeros(rt,1);

%blast 检测算法
if mod(rt,Mt)==0 ,   % rt 是M整数倍
    for m=1:Mt,
        dec_numb=dec_order(m);
        inv_temp_HW=pinv(temp_HW);
        HWr=sqrt(Mt)*inv_temp_HW(dec_numb,:)*temp_r;
  
        % 解调信号 &&  重构信号
        modu_size = 2^(rt/Mt);
        temp_y  = rx_demodulate_4(HWr,modu_size);
        %rebulid=tx_modulate_2(temp_y,modu_size);       %有错误传播
        rebulid=mod_b(dec_numb);                        %无错误传播  
        
        %减去 重构信号  
        temp_r=temp_r - 1/sqrt(Mt) *HW(:,dec_numb)*rebulid;
        temp_HW(:,dec_numb)=zeros(Mr,1);
        y( (dec_numb-1)*(rt/Mt) + (1:(rt/Mt)) )=temp_y;
    end;  
else    % rt 不是 M整数倍
    disp('rt 不是 Mt整数倍,请重新设置');
end;

⌨️ 快捷键说明

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