一种基于增量中继与机会中继的协同通信技术matlab仿真

目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

       协同通信是在无线通信中用户相互协作转发彼此的信 息,构成一个虚拟的MIMO系统,能够在不增加终端天线数 量的前提下,获得空间分集增益,提高系统性能和信道衰落 的稳健性。因此,近年来协同通信得到了很多学者的关注。 目前在协同通信领域的诸多研究方向中非常有实际意义的一 个方向是中继节点的选择问题,即在所有可能的中继节点 中,选择多少个,选择哪个或哪些,选择方法的优劣按照什 么样的标准评判等。选择中继节点是进行协同通信的前提, 目前还没有形成一个公认的成熟的方案。

        基于增量中继和机会中继的协同通信技术是一种用于无线通信系统中的高效通信方案。该技术通过结合增量中继和机会中继的特点,以提高系统的覆盖范围、可靠性和容量。

增量中继(Incremental Relaying): 增量中继是一种中继通信技术,其中中继节点在每次传输中逐渐增加信息的可靠性。具体而言,每个中继节点在传输中对收到的信号进行解码,然后将解码的部分信息重新编码并传输给下一个中继节点或终端。这样,随着中继节点的逐步参与,信号的可靠性逐渐增加,从而提高了通信链路的质量。

机会中继(Opportunistic Relaying): 机会中继是一种利用信道的好时机进行中继的技术。中继节点根据当前信道状态决定是否参与中继传输。如果信道状态良好,中继节点会参与中继传输以提高信号质量;如果信道状态不佳,中继节点则不参与以避免引入干扰。

协同通信技术: 基于增量中继和机会中继的协同通信技术将这两种方法结合起来,以优化通信系统的性能。具体来说,当信道质量较好时,中继节点可以通过增量中继方式逐步提升信号的可靠性。而当信道质量较差时,中继节点可以选择不参与中继,以避免引入额外的干扰。

优势和应用:

  • 性能提升: 这种协同通信技术可以显著提高通信系统的覆盖范围和可靠性,同时兼顾了信道质量不佳时的性能问题。
  • 资源效率: 通过机会中继的方式,可以避免在信道质量较差时进行中继,从而提高系统的资源利用效率。
  • 适应性: 这种技术具有较强的适应性,可以根据信道条件智能地选择合适的中继方式,以获得最佳性能。

应用领域: 这种基于增量中继与机会中继的协同通信技术在各种无线通信系统中都可以应用,包括移动通信、物联网、无线传感器网络等,特别是在信号传输距离较长、信道质量不稳定的场景下,其性能优势更为明显。

       Lanema和Zimmermann等 人指出,在协同通信 中,频繁的重复传输是降低系统性能的重要因素,特别是在 数据速率较高时对系统性能的影响更大。为减少重传次数, Laneman提出在协同通信中采用类似于ARQ的方式,利用目 的节点的反馈,仅在直接传输(DT,Direct Transmission) 不成功时才由中继节点进行重传。这样,重传的次数大大减 少,频谱效率得到有效提高。Laneman把这种方案称为增量 中继(IR,Incremental Relaying),并且分析了基于放大中 继(AF,Amplify and Forward)的IR方案——Incremental AF(IAF)的中断概率。不过这种分析只限于三个节点的简 单情况,对于更接近实际的多节点情况没有进行分析。对 于采用DF的IR方案也只是说情况比较复杂,而没有作进一 步的分析。Zimmermann也提出过类似的想法,他称之为 Distributed Hybrid ARQ(DHARQ)。

        主要分为三种情况进行仿真,DT:直接传输;ODF:单独的机会中继DF;IODF:增加中继和机会中继结合的DF。

        直接模式,就是不通过中继进行直接的传输,其基本原理,这里就不介绍了;

        ODF模式,即机会中继的DF模式,其基本原理如下所示:

        首先DF模式的基本原理如下所示:

       中继节点R直接将收到的来自源节点S的信号ys,r进行解调译码,并通过某种方式校验译码是否正确,如果错误则中继不再发送该信号,如果正确,则将该信号重新编码调制,然后转发给目的节点D(基站)。在编码过程中,可以选择与源节点一样的编码方案,或者采取不同的编码方式。

       所谓的机会中继DF,其重要特点突出的是机会中继,机会中继的基本含义为:

即通过统计瞬时信噪比,获得最大瞬时信噪比的中继路径作为我们的转发路径。

        IODF模式,即增量中继和机会中继的DF模式,基本含义为:

        当直接模式中断的时候,启动机会中继策略进行传输。

二、核心程序

....................................................................
Signal_mod   = modulate(modem.pskmod(M),Signal);
Index        = 0;    
for SNR_dB=Snr_1:Snr_2
    SNR_dB
 	Index = Index+1;   
	ERR   = 0; 
    for Times = 0:Monte_Times
        RandStream.setDefaultStream(RandStream('mt19937ar','seed',Times));
        %产生信道
        %Source and Destination
        H_sd         = func_Rayleigh_Channel(1);    
        %节点1信道
        H_sr1        = func_Rayleigh_Channel(1);  
        H_rd1        = func_Rayleigh_Channel(1);  
        %节点2信道
        H_sr2        = func_Rayleigh_Channel(1);  
        H_rd2        = func_Rayleigh_Channel(1);  
        %节点3信道
        H_sr3        = func_Rayleigh_Channel(1);  
        H_rd3        = func_Rayleigh_Channel(1);  
        %节点4信道
        H_sr4        = func_Rayleigh_Channel(1);  
        H_rd4        = func_Rayleigh_Channel(1); 
        
        sig           = 10^(SNR_dB/10);
        Power_Signals = Power_signal;   
        Power_Niose   = Power_Signals / sig;  
        %直接模式下不通过中继节点直接进行传输
        Y_S2D   = awgn(sqrt(Power_Signals)*H_sd*Signal_mod,SNR_dB);	
        %DT,当DT失败的时候,启动中继
        y_ODFs  = demodulate(modem.pskdemod(M),H_sd'*Y_S2D);
        %判断是否接受成功
        T       = func_check(Signal,y_ODFs);
        if T < 1;%接受成功
            y_ODF = y_ODFs;
        else%接收不成功,启动中继
            Y_S2R1 = awgn(sqrt(Power_Signals)*H_sr1*Signal_mod,SNR_dB);	
            Y_S2R2 = awgn(sqrt(Power_Signals)*H_sr2*Signal_mod,SNR_dB);	
            Y_S2R3 = awgn(sqrt(Power_Signals)*H_sr3*Signal_mod,SNR_dB);	
            Y_S2R4 = awgn(sqrt(Power_Signals)*H_sr4*Signal_mod,SNR_dB);
            Y_S2R  = [Y_S2R1;Y_S2R2;Y_S2R3;Y_S2R4];

            H_sr   = [H_sr1 H_sr2 H_sr3 H_sr4];
            H_rd   = [H_rd1 H_rd2 H_rd3 H_rd4];
            %选瞬时信噪比最大的座位转发中继
            R1     = SNR_dB*(abs(H_sr1))^2;
            R2     = SNR_dB*(abs(H_sr2))^2;
            R3     = SNR_dB*(abs(H_sr3))^2;
            R4     = SNR_dB*(abs(H_sr4))^2;
            R      = [R1 R2 R3 R4];
...................................................
        end
        %计算中断概论
        ERR    = ERR + func_ber(Signal,y_ODF);  
    end
	probability_outage_IODF(Index)      = ERR/(N*Monte_Times);	
end

SNR_dB = Snr_1:1:Snr_2;
figure;
semilogy(SNR_dB,probability_outage_IODF,'r-o');
grid on;
ylabel('probability outage');
xlabel('SNR(dB)');
axis([Snr_1,Snr_2,10^(-25),1]);
save IODF4.mat SNR_dB probability_outage_IODF
%A01-65

三、测试结果

在matlab2021a中仿真得到如下的效果:

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fpga和matlab

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

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

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

打赏作者

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

抵扣说明:

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

余额充值