在多节点无线通信中差分放大转发技术的性能研究(Matlab代码实现)

  💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

摘要— 本文关注的是差分放大转发(D-AF)中继在时变瑞利衰落信道上进行多节点无线通信的性能。利用一阶自回归模型来描述信道的时变特性。基于无线信道的二阶统计特性,提出了一组新的组合权重,用于目的地的信号检测。提供了成对误码概率(PEP)的表达式,并用于获得近似的总平均比特错误概率(BER)。结果表明,系统的性能与直接和级联信道的自相关性有关,在高信噪比(SNR)下存在不可避免的误差底线。与传统的组合方案相比,新的权重导致更好的性能。在不同场景下进行计算机模拟以支持分析。关键词—差分放大转发中继、非相干检测、时变信道、性能分析、信道自相关、自回归模型。

对于无线通信系统更好质量和更高数据速率的不断增长需求促使使用多发射/接收天线,从而导致所谓的多输入多输出(MIMO)系统的应用。然而,由于移动单元的空间有限,使用多个天线对于使得无线信道相互独立不实际。然而,协作通信技术解决了这一限制,已经被证明适用于许多无线系统和应用,如3GPP LTE-Advances、WiMAX、WLANs、车对车通信和无线传感器网络等。

协作通信利用了这样一个事实,即由于网络中的其他用户在源进行传输时也可以收听源,他们可以在另一个阶段将接收到的数据重新广播到目的地以帮助源。因此,系统的整体多样性和性能将受益于使用其他用户帮助构建的虚拟MIMO系统。

根据中继利用的协作策略不同,中继网络被分类为解码转发或放大转发。

在这些策略中,放大转发(AF)由于在中继功能上的简单性已经成为许多研究的焦点。具体来说,中继的功能是将接收到的信号与固定或可变增益相乘,并将结果转发给接收器。为了方便起见,源-中继-目的地的整体信道称为级联、等效或双瑞利信道。根据调制类型,中继可能需要完整或部分的信道状态信息(CSI)来确定放大因子。此外,目的地需要直接和级联信道的CSI,以便将接收到的信号进行相干检测。为了避免在中继和目的地进行信道估计,文献[9]–[12]考虑了差分放大转发(D-AF)方案,该方案只需要中继的信道的二阶统计信息。在没有瞬时CSI的情况下,基于二阶统计信息的一组固定权重用于合并中继-目的地和源-目的地链路上的接收信号。然后,应用标准的差分检测来恢复发送的符号。然而,所有先前的工作都假设了一个慢衰落的情况,并表明D-AF的性能比其相干版本的性能差大约3-4 dB。为了将来参考,我们将这样的方案称为“传统差分检测”(CDD)。在实践中,移动用户速度的增加导致快速时变信道(也称为时选择性信道)。因此,在传统差分检测发展中所做的典型假设,即连续两个信道使用近似相等,被违反了。因此,重要的是考虑D-AF中继系统的性能以及在更实际和一般的信道变化情况下的稳健性。还应该指出,时变信道对相干AF中继网络性能的影响已经在文献[13]、[14]中进行了研究。
结论:

多节点中继网络在快速时变信道上使用差分M-PSK调制和放大转发策略时进行了分析。信道的时变性与其自相关值相关联。利用自相关值,提供了目的地处的新组合权重。获得的误码概率表达式作为实际比特误码率的下界。结果表明,误差性能取决于直接信道和级联信道的衰落速率。对于快速衰落信道,较大的衰落速率可能导致误码概率严重降低。还表明,在时变信道中存在高信噪比时的误差地板,并根据信道自相关性确定了这种误差地板。该分析得到了在不同场景下的模拟支持,并描绘了所提出的组合增益导致比传统组合权重获得更好性能。

📚2 运行结果

部分代码:

clc
close all
clear all
addpath('functions');
%%

% MPSK modulation
M=4;
Ns=1E5;% number of symbols
Ptot_dB=0:5:40;% SNR scan, total power in the network
Ptot=10.^(Ptot_dB/10);
N0=1; % noise variance

% number of Relays
R=2;

% channel distance between two consecutive channel uses
ch_dis=0; % 0 for block-by-block and R for symbol-by-symbol

%  scenarios
vfsd=[.005,.05,.1];
vfsr=[.005,.05,.1];
vfrd=[.005,.005,.05];

% select the scenario
scenario=2;

% normalized Dopplers
fsd=vfsd(scenario);
fsr=vfsr(scenario);
frd=vfrd(scenario);

% auto-correlations
[alfa_sd,alfa]=auto_corr(fsd,fsr,frd,ch_dis);

% power allocation
[P0,Pi]=opt_pow(Ptot,fsd,fsr,frd,M,ch_dis,R);
 c0=.5;
 P0=c0*Ptot;
 Pi=(1-c0)*Ptot./R;
Ai2= Pi./(P0+N0);

% CDD power allocation
if M==2, c0=.5; else c0=.5; end
P0_cdd=c0*Ptot;
Pi_cdd=(1-c0)*Ptot./R;
Ai2_cdd= Pi_cdd./(P0_cdd+N0);

% this loop scans the SNR range
for ind=1:length(Ptot)

nbits=0;%total number of info sent
err_cdd=0;% error counter for convential diff detection
err_tvd=0;% error counter for time-varying case
clc
Ptot_dB(ind)

% this loop keeps going to get a certain amount of errors
ERR_TH=100;
while err_cdd<ERR_TH || err_tvd<ERR_TH

% info bits
xb=bits(log2(M)*Ns);

%binary  to MPSK
v=bin2mpsk(xb,M);

% DPSK modulation
s=diff_encoder(v);
Nd=length(s);

% S-D channel
hsd=flat_cos(Nd,fsd,ch_dis);

% S-R and R-D channels
for k=1:R
hsr(k,:)=flat_cos(Nd,fsr,ch_dis);
hrd(k,:)=flat_cos(Nd,frd,ch_dis);
end

% AWGN noise CN(0,N0)
z_sd=cxn(Nd,N0);
for k=1:R
z_sr(k,:)=cxn(Nd,N0);
z_rd(k,:)=cxn(Nd,N0);
end

%--------------------------------------- received signals
% CDD power allocation
y_sd_cdd=sqrt(P0_cdd(ind))*hsd.*s+z_sd;
for k=1:R
y_sr_cdd(k,:)=sqrt(P0_cdd(ind))*hsr(k,:).*s+z_sr(k,:);
y_rd_cdd(k,:)=sqrt(Ai2_cdd(ind))*hrd(k,:).*y_sr_cdd(k,:)+z_rd(k,:);
end

% propossed power allocation for time-varying
y_sd=sqrt(P0(ind))*hsd.*s+z_sd;
for k=1:R
y_sr_tvd(k,:)=sqrt(P0(ind))*hsr(k,:).*s+z_sr(k,:);
y_rd_tvd(k,:)=sqrt(Ai2(ind))*hrd(k,:).*y_sr_tvd(k,:)+z_rd(k,:);
end
% ---------------------------------------- MRC combining
% classical weights
a0_cdd=1/2;
ai_cdd=1/(1+Ai2_cdd(ind))/2;
vh_cdd=a0_cdd*diff_detector(y_sd_cdd);
for k=1:R
vh_cdd=vh_cdd+ai_cdd*diff_detector(y_rd_cdd(k,:));
end

% propossed weights for time-varying
[at1,at2]=mrc_gains(P0(ind),Ai2(ind),alfa_sd,alfa);
vh_tvd=at1*diff_detector(y_sd);
for k=1:R
vh_tvd=vh_tvd+at2*diff_detector(y_rd_tvd(k,:));
end

% binary detection
bh_cdd=mpsk2bin(vh_cdd,M);
bh_tvd=mpsk2bin(vh_tvd,M);

% error count
err_cdd=err_cdd+sum(abs(xb-bh_cdd));
err_tvd=err_tvd+sum(abs(xb-bh_tvd));
nbits=log2(M)*Ns+nbits;

end

% compute practical BER 
BER_cdd(ind)=err_cdd/nbits;% coperative
BER_tvd(ind)=err_tvd/nbits;% coperative

end

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码实现

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值