您现在的位置:首页 >> 通信 >> 内容

基于matlab的多符号差分球形译码误码率仿真

时间:2023/1/12 19:39:42 点击:

  核心提示:A220,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y56Vkppu

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览



3.算法概述

        在无线传感器网络分布式检测中,信道条件复杂,难于估计。比较相关检测,差分检测的优势是不需要信道估计,但总是付出一定的性能损失。为了缩短这一差距,本文提出多符号差分检测,并结合低复杂度球形译码算法,对多符号差分球形检测的迭代搜索过程进行了详细分析。算法检测性能和复杂度的分析表明,该检测算法不仅能有效降低计算复杂度,而且能保证较好的检测性能。结果证明该算法可作为一种有效检测算法应用于无线传感器网络分布式检测中。

        在差分协作系统中,为了解决硬判决多符号差分检测(multi-symbol differential detection,MSDD)译码过程中,部分信息丢失导致性能损失以及该算法中最大似然检测计算复杂度高的问题,提出了一种软输入软输出的多符号差分球形译码(SISO-MSDSD)算法.该算法利用球形译码思想,在一定搜索范围内计算编码比特的对数似然比(LLR),去除先验信息可获得编码比特的外信息,经内部译码器判决得到源信息.

4.部分源码

..................................................................

% multiple symbol sphere detection

for k=1:N-1:Nd-N+1

    rN=r(k:k+N-1).';

    U=conj(Lh*diag(rN));

    shat=MSDSD(U,M,R);

    vh_ms(k:k+N-2)=diff_detector(shat);

end

% conventional non-coherent detection

vh_cdd=diff_detector(r);

% binary detection

bh_cdd=mpsk2bin(vh_cdd,M);

bh_ms=mpsk2bin(vh_ms,M);

% count number of errors and data

err_ms=err_ms+sum(abs(xb-bh_ms));

err_cdd=err_cdd+sum(abs(xb-bh_cdd));

nbits=log2(M)*Ns+nbits;%Ns is number of symbols

end

% compute practical BER 

ber_ms(ind)=err_ms/nbits;% multiple symbol

ber_cdd(ind)=err_cdd/nbits;% conventional

end

% BER theory value from book "digital comm on fading channels" page 293&259

Pb_coh=.5*(1-sqrt(EbN0./(1+EbN0)));

roh=besselj(0,2*pi*fdTs);

if M==2

    Pb_cdd=0.5*(1+EbN0*(1-roh))./(1+EbN0);   

elseif M==4

    Pb_cdd=.5*(1+EbN0*(1-roh))./(1+EbN0);% this is not exact!   

end

for k=1:length(EsN0)

    N0=1/EsN0(k);

    Pb_ms(k)=ber_msd(M,N,N0,fdTs);

end

mk=['r-s';'k-*';'b-o';'m-x'];

figure

semilogy(EbN0_dB,ber_ms,mk(1,:),'LineWidth',1,'MarkerSize',5);

hold on

semilogy(EbN0_dB,Pb_ms,mk(3,:),'LineWidth',1,'MarkerSize',5);

grid on

xlabel('E_b/N_0')

ylabel('Bit Error Rate')

leg1=['MSD ',stats_opt,', N=',num2str(N)];

legend(leg1,'Theory MSDD');

set(gca,'XTick',EbN0_dB(1):5:EbN0_dB(end))

figure

semilogy(EbN0_dB,ber_cdd,mk(1,:),'LineWidth',1,'MarkerSize',5);

hold on

semilogy(EbN0_dB,Pb_cdd,mk(3,:),'LineWidth',1,'MarkerSize',5);

grid on

xlabel('E_b/N_0')

ylabel('Bit Error Rate')

leg1=['MSD ',stats_opt,', N=',num2str(N)];

legend('Simulation CDD','Theory CDD');

set(gca,'XTick',EbN0_dB(1):5:EbN0_dB(end))

A220

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168