首页 > 其他分享 >【增量中继】基于增量中继与机会中继的协同通信的matlab仿真

【增量中继】基于增量中继与机会中继的协同通信的matlab仿真

时间:2022-11-09 21:13:17浏览次数:53  
标签:中继 Power dB 协同通信 SNR func 增量 节点

1.软件版本

matlab2013b

2.系统描述

在近年来提出的协同通信方案中,机会中继(OR,Opportunistic Relaying)是比较合理和可行的一种方案。它是一种分布式的单中继方案,其独特之处在于各中间节点根据其与源节点和目的节
点之间的信道状况自行设置倒计时,通过竞争找出最佳的节点作为中继节点。它在保持了单中继方案的简单、易于实现的优点的同时达到了多中继方案的分集阶数,且在中继节点的选择上付出的代价最小。解码中继(DF,Decode and Forward)策略的OR方案Opportunistic DF(ODF)的中断概率。利用目的节点的反馈,仅在直接传输(DT,Direct Transmission)不成功时才由中继节点进行重传。这样,重传的次数大大减少,频谱效率得到有效提高。OR与IR相结合的方案——Incremental Opportunistic Decode and Forward(IODF),中继节点对于源节点的信息采用DF策略,中继节点的选择类似于OR,由各中间节点根据其与目的节点之间的信道状况设置倒计时,通过竞争分布式地完成。

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

所谓的机会中继DF,其重要特点突出的是机会中继,机会中继的基本含义为:即通过统计瞬时信噪比,获得最大瞬时信噪比的中继路径作为我们的转发路径。

IODF模式,即增量中继和机会中继的DF模式,基本含义为:当直接模式中断的时候,启动机会中继策略进行传输,根据上面的原理,我们进行仿真.

3.部分源码


 

clc;
clear;
close all;
warning off;
pack;
addpath 'func\'
Snr_1 = 0;
Snr_2 = 20;
%信号功率
Power_signal = 0.1;
Monte_Times = 1000;
M = 4; %QPSK调制
N = 1e3;%仿真bit数
%产生信号源
Signal = randint(1,N,M);
Signal_mod = modulate(modem.pskmod(M),Signal);
Index = 0;
B = 2;
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];
[V,I] = max(R);
Y_S2RO = Y_S2R(I,:);
H_rdO = H_rd(I);
H_srO = H_sr(I);
%ODF
x_ODF = func_ODF(M,Y_S2RO,Signal);
y_rd = awgn( sqrt(2)*H_rdO * x_ODF, SNR_dB);
y_combine_ODF = func_MRC(H_sd,H_rdO,Power_Signals,Power_Niose,Y_S2D,y_rd);
y_ODF = demodulate(modem.pskdemod(M),y_combine_ODF);
H = abs(H_srO)*abs(H_rdO);
end
%计算速率
Rs(Times+1) = 0.5*B*log2(abs(H*sig)/10+1);
end
Rate(Index) = mean(Rs);
end
SNR_dB = Snr_1:1:Snr_2;
figure;
plot(SNR_dB,Rate,'r-o');
grid on;
ylabel('Rate');
xlabel('SNR(dB)');
axis([Snr_1,Snr_2,0,6]);
save IODF4.mat SNR_dB Rate

4.仿真结论

 

 

 

 

 

 A01-65


标签:中继,Power,dB,协同通信,SNR,func,增量,节点
From: https://www.cnblogs.com/matlabfpga/p/16875167.html

相关文章

  • Xmake v2.7.3 发布,包组件和 C++ 模块增量构建支持
    Xmake是一个基于Lua的轻量级跨平台构建工具。它非常的轻量,没有任何依赖,因为它内置了Lua运行时。它使用xmake.lua维护项目构建,相比makefile/CMakeLists.txt,配置语......
  • 【随机过程】随机过系列之特征函数、宽平稳与平稳独立增量
    1.特征函数随机过程常见表示方式:${X(t);t\inT}$,有四个特征函数,见下表。特征函数表达式理解均值函数$\mu_X(t)=E[X(t)]$相当于随机变量的均值,知当t确定......
  • 最简单Openwrt ipv6配置,局域网WAN6中继模式获取原生ipv6地址
    条件condition    wan 和wan6 是默认配置  Wanandwan6arethedefaultconfigurations    同时wan6可以获取到原生IPv6  Atthesametimewan6can......
  • kettle如何实现增量更新
    当在实际项目过程中我们需要对数据进行增量更新操作举个例子一张生活轨迹融合表是有上网信息和入住酒店信息两张表的数据unionall产生,如果一个融合表是多张表融合的,......
  • 【融云出海白皮书免费看】-巴西成增量潜力「应许之地」
    在全球化的大旗下,中国互联网出海经历了不同地区的价值迁徙,完成着在新兴市场如东南亚建立信心后,到成熟市场如美国的进阶。关注【融云全球互联网通信云】了解更多《2022社交......
  • 使用shell进行简单分析增量更新时间的方法
    使用shell进行简单分析增量更新时间的方法思路产品里面更新增量时耗时较久,想着能够简单分析下哪些补丁更新时间久哪些相同前缀的补丁更新的时间累积较久.本来想通......
  • OPPO F2FS 增量压缩存储方案
    演讲链接:第17届中国Linux内核开发者大会IO与eBPF分论坛-CSDN直播数据库会带来大量随机更新写。对F2FS来说,一次写不仅需要更新datablock,还需要更新索引blo......
  • Datax-Web 增量配置说明
    1、页面任务配置1.辅助参数选择时间自增2.增量开始时间选择,即sql中查询时间的开始时间,用户使用此选项方便第一次的全量同步。第一次同步完成后,该时间被更新为上一次的......
  • Sql数据库增量备份还原
    1、首先还原一个全备RESTOREDATABASESWJSWMESFROMDISK='D:\XXX.BAK'WITHMOVEN'XXX'TON'D:\Backup\XXX.ndf',MOVEN'XXX_log'TON'D:\Backup\XXX_l......
  • SQLServer增量收缩数据文件的大小
    增量收缩数据文件脚本--SQLServer--Shrink_DB_File.sql/*Thisscriptisusedtoshrinkadatabasefileinincrementsuntilitreachesatargetfreespacelimi......