​多天线系统的各种信号检测算法matlab源码程序 - matlab通信信号 - 谷速源码
下载频道> 资源分类> matlab源码> 通信信号> ​多天线系统的各种信号检测算法matlab源码程序

标题:​多天线系统的各种信号检测算法matlab源码程序
分享到:

所属分类: 通信信号 资源类型:程序源码 文件大小: 243.96 KB 上传时间: 2019-06-16 15:04:01 下载次数: 76 资源积分:1分 提 供 者: zhangsan456 MIMO_detection
内容:
多天线系统的各种信号检测算法包括迫零,最小均方误差,最大似然,改进的最大似然
function [MLD_det_bit]=Appro_MLD_detection(y,H_ori,Tx,Modu_bit,SNR)
 
%considering Tx=4, and 64QAM
SNR=10^(SNR/10); 
Noise_power=1/SNR;%根据SNR=10log10(S/N)
 
OneBySqrt42=0.1543033499;
 
if Tx==4 & Modu_bit==6
    %constitute all candidates for each antenna
    tmp=[-7,-5,-3,-1,1,3,5,7];
    cand=zeros(64,1);
    for a=1:8
        for b=1:8
            index=b+(a-1)*8;
            cand(index)=tmp(a)+j*tmp(b);
            cand(index)=cand(index)*OneBySqrt42;
        end
    end
    
    %initial
    s1_index_optimal=0;s2_index_optimal=0;s3_index_optimal=0;s4_index_optimal=0;
    min_err=9999999;
    %sort
    P=inv(H_ori'*H_ori+Noise_power*eye(4));
    SINR=1./real(diag(P));
    sort_SINR=sort(SINR);%sort_SINR(Tx) is the largest, sort_SINR(Tx-1) is the second largest
    %find the original position in the SINR
    position=zeros(Tx,1);
    for tx=1:Tx
        position(tx)=findPosition(SINR,sort_SINR(tx),Tx);
    end
    
    bak_position=zeros(Tx,1);
    
    %position(Tx)<-> 3, position(Tx-1)<->4,position(Tx-2)<->1,position(Tx-3)<->2
    H_bak=H_ori;
    bak_position=zeros(Tx,1);
    H(:,3)=H_bak(:,position(Tx)); bak_position(3)=position(Tx);%bak_position(3)=position(Tx) the largest one , original index is position(Tx)
    H(:,4)=H_bak(:,position(Tx-1));bak_position(4)=position(Tx-1); % bak_position(4)=position(Tx-1) original index is position(Tx-1)
    H(:,2)=H_bak(:,position(Tx-2));bak_position(2)=position(Tx-2); %bak_position(2)=position(Tx-2)
    H(:,1)=H_bak(:,position(Tx-3));bak_position(1)=position(Tx-3); %bak_position(1)=position(Tx-3)
    
    H_sub=[H(:,3),H(:,4)];
    Filter_matrix1=inv(H_sub'*H_sub+Noise_power*eye(2))*H_sub';%2*4
    H_sub=[H(:,4)];
    Filter_matrix2=inv(H_sub'*H_sub+Noise_power*eye(1))*H_sub';%1*4
            
    for s1_index=1:64
        %s1_index
        z1=y-H(:,1)*cand(s1_index);
        for s2_index=1:64
            z2=z1-H(:,2)*cand(s2_index);
            
            s3_estimated=Filter_matrix1(1,:)*z2;
            s3_index_optimal_test=sort_optimal_index(s3_estimated,cand,64);
            
            z3=z2-H(:,3)*cand(s3_index_optimal_test);
            s4_estimated=Filter_matrix2(1,:)*z3;
            s4_index_optimal_test=sort_optimal_index(s4_estimated,cand,64);
            
            z4=z3-H(:,4)*cand(s4_index_optimal_test); 
            err=z4'*z4;
            
            if err<min_err
                min_err=err;
                s1_index_optimal=s1_index;s2_index_optimal=s2_index;
                s3_index_optimal=s3_index_optimal_test;s4_index_optimal=s4_index_optimal_test;
            end
            
        end
    end
    min_err;
    MLD_det_bit(bak_position(1),:)=component_wise(cand(s1_index_optimal),Modu_bit);
    MLD_det_bit(bak_position(2),:)=component_wise(cand(s2_index_optimal),Modu_bit);
    MLD_det_bit(bak_position(3),:)=component_wise(cand(s3_index_optimal),Modu_bit);
    MLD_det_bit(bak_position(4),:)=component_wise(cand(s4_index_optimal),Modu_bit);
    
end %if Tx==4
 
return;

关键词: ​多天线系统 信号检测 matlab源码程序

Top_arrow
回到顶部
联系方式| 版权声明| 招聘信息| 广告服务| 银行汇款| 法律顾问| 兼职技术| 付款方式| 关于我们|
网站客服网站客服 程序员兼职招聘 程序员兼职招聘
沪ICP备19040327号-3
公安备案号:沪公网安备 31011802003874号
库纳格流体控制系统(上海)有限公司 版权所有
Copyright © 1999-2014, GUSUCODE.COM, All Rights Reserved