【采用差分二相移键控DBPSK的D-AF中继网络中】选择合并技术在时变信道上的差分放大转发中继性能】研究(Matlab代码实现)

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

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

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

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

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、文章下载


 ⛳️赠与读者

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

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

💥1 概述

摘要:对于时变信道上的差分放大转发中的目的地进行选择合并(SC)是具有吸引力的,因为与半最大比合并(semi-MRC)相比,它不需要通道状态信息,同时提供接近的性能。最近有关SC方案的性能分析仅针对缓慢衰落信道的情况进行了报告。本文提供了SC方案在一般情况下的时变瑞利衰落信道上的精确平均比特误码率(BER),并且当DBPSK调制与目的地的非相干检测一起使用时。所呈现的分析经过了各种衰落场景的模拟结果的彻底验证。结果表明,系统的性能与信道的自相关值有关。还表明,SC方法的性能非常接近于半MRC方法,并且在高信噪比区域存在误码率底线在这两种方法中是不可避免的。对于SC方法得到的BER分析也可用于近似MRC方法的BER性能,后者在时变信道中的确切分析评估似乎很困难。

合作通信现在已成为一个成熟的研究课题。目前,一种特殊类型的协同通信(借助一个中继器)已经在3GPP LTE技术中标准化,以解决蜂窝网络的覆盖问题,并且预期LTE-高级版本将包含协同中继特性,以克服容量和干扰等其他限制[1]。合作中继网络在无线局域网、车对车通信和无线传感器网络中的应用也在[2]-[5]及其中引用的文献中有讨论。

在合作通信中,网络中的一个用户充当中继,接收来自源节点的信号,处理后并重新广播给目的节点。通过这种方式,除了源节点到目的节点的直接链路之外,还可以通过中继构建额外的链路,从而系统整体的空间多样性得到增加。根据中继所采用的信号处理策略,中继网络通常被分为解码转发(DF)和放大转发(AF)两大类[6]。

在采用差分二相移键控(DBPSK)的D-AF中继网络中,研究了时变瑞利衰落信道中目的端接收到的信号的选择合并。得益于差分编码和选择合并器,目的端进行信息检测时无需信道状态信息。系统的确切误比特率被推导出来。在不同衰落速率和信道方差条件下的仿真结果验证了分析,并显示选择合并器的性能非常接近于更复杂的半最大比合并方法(该方法需要目的端所有信道的二阶统计信息)。

📚2 运行结果

部分代码:

M=2;% MPSK modulation
Ns=1E5;% number of symbols
N0=1;% noise variance
Ptot_dB=0:5:30;% SNR scan
Ptot=10.^(Ptot_dB/10)*N0;

% ------------------------------------% 
%choose channel scenario 1,2,3
ch_scn=1;
%choose fading scenario, 1,2,3 
fade_scn=1;

% ------------- channel variances
vsig_sd=[1,1,1];
vsig_sr=[1,10,1];
vsig_rd=[1,1,10];
sig_sd=vsig_sd(ch_scn);
sig_sr=vsig_sr(ch_scn);
sig_rd=vsig_rd(ch_scn);

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

% normalized Dopplers frequencies
vfsd=[.001,.02,.05];
vfsr=[.001,.02,.01];
vfrd=[.001,.001,.05];

% scenario number
fsd=vfsd(fade_scn);
fsr=vfsr(fade_scn);
frd=vfrd(fade_scn);

% auto-correlation values
alfa0=besselj(0,2*pi*fsd*ch_dis);
alfa1=besselj(0,2*pi*fsr*ch_dis);
alfa2=besselj(0,2*pi*frd*ch_dis);
alfa=alfa1*alfa2;

% power allocation
vpaf=[.66,.54,.8];
paf=vpaf(ch_scn);

% source power
P0=paf*Ptot;
% relay power
P1=(1-paf)*Ptot;
% amplification factor
Ai2= P1./(P0*sig_sr+N0);

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

nbits=0;%total number of info sent
err_mrc=0;% error counter MRC method
err_sc=0;% error counter Selection Combining

clc
Ptot_dB(ind)

% this loop keeps going to get a certain amount of errors
ERR_TH=100;
while err_mrc<ERR_TH || err_sc<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=sqrt(sig_sd)*flat_cos(Nd,fsd,ch_dis);

% S-R and R-D channels
hsr=sqrt(sig_sr)*flat_cos(Nd,fsr,ch_dis);
hrd=sqrt(sig_rd)*flat_cos(Nd,frd,ch_dis);

% AWGN noise CN(0,N0)
z_sd=cxn(Nd,N0);
z_sr=cxn(Nd,N0);
z_rd=cxn(Nd,N0);

% received signals at destination
y_sd=sqrt(P0(ind))*hsd.*s+z_sd;
y_sr=sqrt(P0(ind))*hsr.*s+z_sr;
y_rd=sqrt(Ai2(ind))*hrd.*y_sr+z_rd;

% decision variables
zeta_sd=real(diff_detector(y_sd));
zeta_rd=real(diff_detector(y_rd));

% MRC combining
a0_mrc=1/N0;
a1_mrc=1/((1+Ai2(ind)*sig_rd)*N0);
vh_mrc=a0_mrc*zeta_sd+a1_mrc*zeta_rd;

% selection combining
vh_sc=zeros(1,length(zeta_sd));
 for k=1:length(zeta_sd)
     if abs(zeta_sd(k))> abs(zeta_rd(k))
         vh_sc(k)=zeta_sd(k);
     else
         vh_sc(k)=zeta_rd(k);
     end
 end

% binary detection
bh_mrc=mpsk2bin(vh_mrc,M);
bh_sc=mpsk2bin(vh_sc,M);

% error count
err_mrc=err_mrc+sum(abs(xb-bh_mrc));
err_sc=err_sc+sum(abs(xb-bh_sc));
nbits=log2(M)*Ns+nbits;

end

% compute practical BER 
BER_mrc(ind)=err_mrc/nbits;
BER_sc(ind)=err_sc/nbits;

end

% theoretical BER, numerical average
Pb_sc=Pb_sc_dpsk(P0,N0,Ai2,M,fsd,fsr,frd,ch_dis,sig_sr,sig_rd,sig_sd);

% BER, analytic average
%Pb_sc2=Pb_sc_dpsk2(P0,N0,Ai2,M,fsd,fsr,frd,ch_dis,sig_sr,sig_rd,sig_sd);

% error floor
Pbf=Pe_floor(paf,fsd,fsr,frd,M,ch_dis,sig_sd,10,sig_rd)*ones(1,length(P0));
%% plot 
lcm=['b-+';'r-X';'k:>';'g-.';'y-*'];
mrk_sz=8;

🎉3 参考文献

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

🌈4 Matlab代码、文章下载

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

                                                           在这里插入图片描述

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB实现DBPSK分二进制)的分解调函数可以使用以下代码: ```matlab function demodulatedSignal = dbpsk_demodulation(signal) % 初始化解调信号 demodulatedSignal = zeros(size(signal)); % 进行分解调 for i = 2:length(signal) demodulatedSignal(i) = exp(1j * angle(signal(i) * conj(signal(i-1)))); end end ``` 这个函数输入一个复数信号`signal`(接收到的调制信号),并返回解调信号`demodulatedSignal`。函数的`exp(1j * angle(signal(i) * conj(signal(i-1))))`用于计算每个采样点的。简单来说,分解调是通过计算邻采样点之间的来还原原始二进制数据。 使用该函数的示例如下: ```matlab % 生成调制信号 originalSignal = randi([0, 1], [1, 1000]); % 生成随机的二进制信号 modulatedSignal = exp(1j * pi * (2 * originalSignal - 1)); % 进行DBPSK调制 % 进行分解调 demodulatedSignal = dbpsk_demodulation(modulatedSignal); % 绘制结果 subplot(2, 1, 1); plot(real(modulatedSignal)); % 绘制调制信号的实部 title('Modulated Signal'); subplot(2, 1, 2); plot(real(demodulatedSignal)); % 绘制解调信号的实部 title('Demodulated Signal'); ``` 在上述代码,首先生成了一个随机的二进制信号`originalSignal`,然后通过`exp(1j * pi * (2 * originalSignal - 1))`进行DBPSK调制,得到调制信号`modulatedSignal`。接下来,调用上述的`dbpsk_demodulation`函数对调制信号进行解调,得到解调信号`demodulatedSignal`。最后,使用绘图函数`plot`绘制调制信号和解调信号的实部,以便可视化观察解调效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值