• wy19961
    了解作者
  • C/C++
    开发工具
  • 7KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 3
    下载次数
  • 2021-04-14 23:13
    上传日期
基于MATLAB的d2d功率控制仿真,简单的解决了资源分配的问题,现在假设有3个可用信道,一个蜂窝用户只允许一个d2d对用户复用资源(复用方式是复用距离最远的蜂窝用户信道,暂时没有考虑干扰问题),那么这3个信道最多可以容纳6个用户(3个蜂窝用户,3对d2d用户)同时进行正常通信,其中蜂窝用户以60%的概率生成,d2d用户以40%的概率生成,且都服从指数分布。
D2D功率分配.zip
  • D2D功率分配
  • PC_open6.m
    7.3KB
  • main6_2.m
    458B
  • PC_close6.m
    6.9KB
  • PC_my6.m
    7.7KB
内容介绍
function [AVG_SINRdd,AVG_SINRcell,AVG_Thdd,AVG_Thcell,AVG_Th]=PC_my6(SINRdd_high,SINRdd_low,SINRcell_high,SINRcell_low) %常数定义 R=500; %蜂窝小区半径为250m Ndd=10; %D2D用户数为10对 Ncell=50; %蜂窝用户数为50个 Lmin=25; %用户距基站的最小距离为25米 Lmax=50; %D2D用户对之间的最大距离为50米 Pmax=24; %最大发射功率为24dBm P0=-78; %P0=-78dBm a=0.8; N=116; %热噪声功率N=116dBm N_UE=9; %用户的噪声指数为9dB N_eNB=5; %基站的噪声指数为5dB B=180; %带宽为180kHz nSum=100; Ddd_cell=zeros(Ndd, 1); Ddd_eNB=zeros(Ndd ,1); Dcell_eNB=zeros(Ndd,1); PLdd=zeros(Ndd,1); PLcell=zeros(Ndd,1); PLcell_dd=zeros(Ndd,1); PLdd_eNB=zeros(Ndd,1); G_SINRdd=zeros(nSum,Ndd); G_SINRcell=zeros(nSum,Ndd); G_Thdd=zeros(nSum,Ndd); G_Thcell=zeros(nSum,Ndd); for j=1:nSum %确定蜂窝用户位置 xcell=rand(Ncell,1)*R*3/2-R; ycell=sqrt(3)*rand(Ncell,1)*R-sqrt(3)*R/2; i=1; while i<=Ncell if xcell(i)<=-R/2 && ycell(i)>=sqrt(3)*(xcell(i)+R); xcell(i)=xcell(i)+3/2*R; ycell(i)=ycell(i)-sqrt(3)*R/2; end; if xcell(i)<=-R/2 && ycell(i)<=-sqrt(3)*(xcell(i)+R) xcell(i)=xcell(i)+3/2*R; ycell(i)=ycell(i)+sqrt(3)*R/2; end if xcell(i)^2+ycell(i)^2<Lmin^2 xcell(i)=rand*3/2*R-R; ycell(i)=sqrt(3)*rand*R-sqrt(3)*R/2; i=i-1; end i=i+1; end; Hcell=[xcell,ycell]; %确定D2D用户位置 xddt=rand(Ndd,1)*3/2*R-R; yddt=sqrt(3)*rand(Ndd,1)*R-sqrt(3)*R/2; i=1; while i<=Ndd if xddt(i)<-R/2 && yddt(i)>=sqrt(3)*(xddt(i)+R); xddt(i)=xddt(i)+3/2*R; yddt(i)=yddt(i)-sqrt(3)*R/2; end; if xddt(i)<-R/2 && yddt(i)<-sqrt(3)*(xddt(i)+R) xddt(i)=xddt(i)+3/2*R; yddt(i)=yddt(i)+sqrt(3)*R/2; end if xddt(i)^2+yddt(i)^2<Lmin^2 xddt(i)=rand*3/2*R-R; yddt(i)=sqrt(3)*rand*R-sqrt(3)*R/2; i=i-1; end i=i+1; end; Hddt=[xddt,yddt]; Ddd_dd=rand(Ndd,1)*Lmax; z=rand(Ndd,1)*2*pi; xddr=zeros(Ndd,1); yddr=zeros(Ndd,1); for i=1:Ndd xddr(i)=xddt(i)+Ddd_dd(i)*cos(z(i)); yddr(i)=yddt(i)+Ddd_dd(i)*sin(z(i)); end Hddr=[xddr,yddr]; %二 资源复用模块 %D2D用户随机复用蜂窝用户资源 Hdd_cell=zeros(Ndd,2); n=randperm(Ncell); for i=1:Ndd Hdd_cell(i,:)=Hcell(n(i),[1,2]); end %三 计算模块 H=Hddr-Hdd_cell; %D2D接收端到蜂窝用户的距离矢量 for i=1:Ndd Ddd_cell(i)=sqrt(H(i)^2+H(i+Ndd)^2); %D2D接收端到蜂窝用户的距离,单位m Ddd_eNB(i)=sqrt(Hddt(i)^2+Hddt(i+Ndd)^2); %D2D发送端到基站的距离,单位m %(1)路径损耗 %D2D用户的路径损耗 if Ddd_dd(i)<44.2 PLdd(i)=38.47+20*log10(Ddd_dd(i)); else PLdd(i)=40.3+40*log10(Ddd_dd(i)); end %蜂窝到D2D接收端的的路径损耗 if Ddd_cell(i)<44.2 PLcell_dd(i)=38.47+20*log10(Ddd_cell(i)); else PLcell_dd(i)=40.3+40*log10(Ddd_cell(i)); end %蜂窝用户的路径损耗 Dcell_eNB(i)=sqrt(Hdd_cell(i)^2+Hdd_cell(i+Ndd)^2); %蜂窝用户到基站的距离,单位m if Dcell_eNB(i)<35 PLcell(i)=89.3; else PLcell(i)=35.24+35*log10(Dcell_eNB(i)); end %D2D发送端eNB的路径损耗 if Ddd_eNB(i)<35 PLdd_eNB(i)=89.3; else PLdd_eNB(i)=35.24+35*log10(Ddd_eNB(i)); end end for k=1:nSum if k==1 %开环功率控制 TPdd=min(Pmax,P0+a*PLdd); TPcell=min(Pmax,P0+a*PLcell); %(2)接收功率 RPdd=TPdd-PLdd-normrnd(0,8,Ndd,1); RPcell=TPcell-PLcell-normrnd(0,8,Ndd,1); %(3)干扰计算 Idd =TPdd-PLdd_eNB; Icell=TPcell-PLcell_dd; %(4)用户的SINR SINRdd=zeros(1,Ndd); SINRcell=zeros(1,Ndd); for i=1:Ndd SINRdd(i)=10*log10(10^(RPdd(i)/10)/(10^(Icell(i)/10)+N)); SINRcell(i)=10*log10(10^(RPcell(i)/10)/(10^(Idd(i)/10)+N)); end; %(5)用户的吞吐量 Thdd=zeros(1,Ndd); Thcell=zeros(1,Ndd); for i=1:Ndd Thdd(i)=B*log2(1+10^(SINRdd(i)/10)); Thcell(i)=B*log2(1+10^(SINRcell(i)/10)); end else for i=1:Ndd if SINRdd(i)>SINRdd_high TPdd(i)=min(Pmax,TPdd(i)-1); end if SINRdd(i)<SINRdd_low TPdd(i)=min(Pmax,TPdd(i)+1); end end for i=1:Ndd if SINRcell(i)>SINRcell_high TPcell(i)=min(Pmax,TPcell(i)-1); end if SINRcell(i)<SINRcell_low TPcell(i)=min(Pmax,TPcell(i)+1); end end RPdd=TPdd-PLdd-normrnd(0,8,Ndd,1)-N_UE; RPcell=TPcell-PLcell-normrnd(0,8,Ndd,1)-N_eNB; %(3)干扰计算 Idd =TPdd-PLdd_eNB; Icell=TPcell-PLcell_dd; %(4)用户的SINR SINRdd=zeros(1,Ndd); SINRcell=zeros(1,Ndd); for i=1:Ndd SINRdd(i)=10*log10(10^(RPdd(i)/10)/(10^(Icell(i)/10)+10^(-N/10))); SINRcell(i)=10*log10(10^(RPcell(i)/10)/(10^(Idd(i)/10)+10^(-N/10))); end; %(5)用户的吞吐量 Thdd=zeros(1,Ndd); Thcell=zeros(1,Ndd); for i=1:Ndd Thdd(i)=B*log2(1+10^(SINRdd(i)/10)); Thcell(i)=B*log2(1+10^(SINRcell(i)/10)); end end end G_SINRdd(j,:)=SINRdd; G_SINRcell(j,:)=SINRcell; G_Thdd(j,:)=Thdd; G_Thcell(j,:)=Thcell; end G_Th=[G_Thdd;G_Thcell]; %图4 开环功率控制、闭环功率控制、联合功率控制D2D用户SINR对比图--联合功控部分 figure(4) range=-20:1:35; M=hist(G_SINRdd,range); cdf1= cumsum(M)/sum(M); plot(range,cdf1,'bx-'); hold on legend('开环功率控制','闭环功控控制','联合功率控制','Location','SouthEast') hold on %图5 开环功率控制、闭环功率控制、联合功率控制 蜂窝用户SINR对比图--联合功控部分 figure(5) range=-20:1:35; M=hist(G_SINRcell,range); cdf1= cumsum(M)/sum(M); plot(range,cdf1,'rx-'); grid on hold on legend('开环功率控制','闭环功控控制','联合功率控制','Location','SouthEast') %图6 开环功率控制、闭环功率控制、联合功率控制 D2D用户吞吐量对比图--联合功控部分 figure(6) range=0:50:2100; M=hist(G_Thdd,range); cdf1= cumsum(M)/sum(M); plot(range,cdf1,'bx-'); grid on hold on legend('开环功率控制','闭环功控控制','联合功率控制','Location','SouthEast') %图7 开环功率控制、闭环功率控制、联合功率控制 蜂窝用户吞吐量对比图--联合功控部分 figure(7) range=0:50:2100; M=hist(G_Thcell,range); cdf1= cumsum(M)/sum(M); plot(range,cdf1,'rx-'); grid on hold on legend('开环功率控制','闭环功控控制','联合功率控制','Location','SouthEast') %图8 开环功率控制、闭环功率控制、联合功率控制 小区所有用户吞吐量对比图--开环功控部分 figure(8) range=0:50:2100; M=hist(G_Th,range); cdf1= cumsum(M)/sum(M); plot(range,cdf1,'kx-'); grid on hold on legend('开环功率控制','闭环功控控制','联合功率控制','Location','SouthEast') AVG_SINRdd=abs(mean(mean(G_SINRdd))); AVG_SINRcell=abs(mean(mean(G_SINRcell))); AVG_Thdd=abs(mean(mean(G_Thdd))); AVG_Thcell=abs(mean(mean(G_Thcell))); % AVG_Th=(AVG_Thdd*Ndd+AVG_Thcell*Ncell)/(Ndd+Ncell); AVG_Th=(AVG_Thdd*Ndd+AVG_Thcell*Ndd)/(Ndd+Ndd); end
评论
    相关推荐
    • TOA.rar
      这是关于TOA的一种抑制 NLOS传播非线性最小二乘法 TOA校正因子估算法
    • 3.rar
      我的开题报告,关于LTE的中的终端直通技术的
    • IMT-A_D2D.rar
      IMT-A_D2D技术白皮书_v1.9.1,介绍了D2D技术的基本内容和研究方向
    • 1176684672.rar
      移动公司试题和答案 很多方面的东西哦,是应聘必备哦
    • matlab由频域变时域的代码-lte-sidelink:左侧链接
      matlab由频域变时域的代码欢迎来到lte-sidelink项目页面 lte-sidelink是由MATLAB在中开发的开放软件库,它实现了3...此外,它还提供了必要的接收器处理功能,以生成和/或恢复经过仿真/仿真或通过无线发送并从SDR板捕获
    • delphi实现无线程序
      delphi实现无线程序
    • 通信技术综合知识
      NULL 博文链接:https://zhaojun1717.iteye.com/blog/949520
    • USB-COM(HL340).rar
      usb转串口,找了很久才找到,现在别的地方很难下到,要不用不了,我这个可以用 HL340D 的
    • NAND FLASH的读写程序.rar
      Nand flash 读写程序 C语言代码,可以给U盘开发者参考 可以读写三星各种型号的Nand flash芯片
    • USB_2.0.rar
      USB2.0开发例程,基于51单片机,包括pc端程序