【分布式空时编码+LDPC】协作MIMO中分布式空时编码和LDPC编译码技术的仿真

1.软件版本

matlab2013b

2.部分源码

clc;
close all;
clear all; 
warning off;


Frame_Length = 120;           %每次仿真数据个数
Error_Num    = 100000;        %统计误码的个数
EbNo         = 0:2:20;        %信噪比
Nt           = 2;             %发送天线
Nr           = 2;             %接收天线
P            = 4;             %调制数

tx2          = zeros(Frame_Length, Nt); 
r            = zeros(Frame_Length, Nr);
H            = zeros(Frame_Length, Nt, Nr); 
z            = zeros(Frame_Length, Nr); 
BERs         = zeros(1, length(EbNo));  
 
for kk = 1:length(EbNo)
    kk
    count       = 0; 
    totalNumErr = 0; 
    SNR         = 10^(EbNo(kk)/10);
    sigma       = 1/(sqrt(SNR)/2);    
    while(totalNumErr < Error_Num)
        kk
        totalNumErr
        
        %产生数据
        data = randint(Frame_Length,1,P); 
        %BPSK
        tx   = pskmod(data,P);
     
        
        %DSTBC
        %G2 = [s1 -s2 ] 
        %     [s2* s1*]
        %以中继输出作为D-STBC的输入
        s1               = tx(1:Nt:end); 
        s2               = tx(2:Nt:end);
        tx2(1:Nt:end, :) = [s1           -s2 ];
        tx2(2:Nt:end, :) = [conj(s2) conj(s1)];
        transmit         = tx2;
        %MIMO信道
        H(1, :, :) = (randn(Nt,Nr)+j*randn(Nt,Nr))/sqrt(2);
        H          =  H(ones(Frame_Length,1),:,:);
        %信号接收
        for i = 1:Nr
            rr      = size(sum(H(:, :, i).*transmit,2)/(Nt),1);
            cc      = size(sum(H(:, :, i).*transmit,2)/(Nt),2);
            r(:, i) = sum(H(:, :, i).*transmit,2)/(Nt) + sigma*(randn(rr,cc)+sqrt(-1)*randn(rr,cc));
        end
        %DSTBC接收
        %ML
        hidx = 1:Nt:length(H);
        for i = 1:Nr
            z1(:, i) =  r(1:Nt:end,i).* conj(H(hidx,1,i)) + conj(r(2:Nt:end,i)).* H(hidx,2,i);
            z2(:, i) = -r(1:Nt:end,i).* conj(H(hidx,2,i)) + conj(r(2:Nt:end,i)).* H(hidx,1,i);
        end
        z(1:Nt:end,:) = z1; 
        z(2:Nt:end,:) = z2;
        Rec_data    = pskdemod(sum(z,2),P);
        count       = count + 1;
        totalNumErr = totalNumErr + biterr(Rec_data, data);
    end
    BERs(kk) = totalNumErr/(2*count*Frame_Length);
end



figure;
semilogy(EbNo,BERs,'r-o');
set(gca,'yscale','log','xlim',[EbNo(1), EbNo(end)],'ylim',[1e-6 1]);
grid on;

save QPSK.mat EbNo BERs



4.仿真结论

协作 MIMO中分布式空时编码技术的研究:

 

 

把规则LDPC加入这个协作MIMOD-STBC里,即是将LDPC码与D-STBC级联,发送端用LDPC编码发送到协作节点,然后协作节点用D-STBC码形式转发到发送端。

 把规则LDPC码加入协作MIMOD-VBLAST(分布式的垂直分层空时码)系统里,做出 ML、ZF-OSIC和 ,RLS-MIMO-DFE三种检测算法误码率的性能比较

比较LDPC级联D-STBC的协作MIMO系统与LDPC码级联D-VBLAST的协作MIMO系统在MLFincke-Pohst MAP算法检测下的误码率性能比较。

比较LDPC级联D-STBC的协作MIMO系统下,接收端检测分别采用ML算法和Fincke-Pohst MAP

5.参考文献

[1]肖小潮, 郑宝玉, 许晓荣. 协作MIMO中分布式空时编码技术的研究[J]. 信号处理, 2011, 27(3):6.

[2] Tsai M Y ,  Yousefi S . Fixed-complexity list-type iterative joint detection and decoding of LDPC-coded V-blast systems[C]// Symposium on Communications. IEEE, 2008.

[3]雷维嘉, 谢显中, 李广军. LDPC编码与空时编码相结合的编码协作方法[J]. 电子科技大学学报, 2009, 38(001):21-24.A01-50

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值