一种基于增量中继与机会中继的协同通信技术matlab仿真
Posted fpga和matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一种基于增量中继与机会中继的协同通信技术matlab仿真相关的知识,希望对你有一定的参考价值。
目录
一、理论基础
协同通信是在无线通信中用户相互协作转发彼此的信 息,构成一个虚拟的MIMO系统,能够在不增加终端天线数 量的前提下,获得空间分集增益,提高系统性能和信道衰落 的稳健性。因此,近年来协同通信得到了很多学者的关注。 目前在协同通信领域的诸多研究方向中非常有实际意义的一 个方向是中继节点的选择问题,即在所有可能的中继节点 中,选择多少个,选择哪个或哪些,选择方法的优劣按照什 么样的标准评判等。选择中继节点是进行协同通信的前提, 目前还没有形成一个公认的成熟的方案。
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中仿真得到如下的效果:
以上是关于一种基于增量中继与机会中继的协同通信技术matlab仿真的主要内容,如果未能解决你的问题,请参考以下文章