matlab仿真基站、用户PPP分布

矩阵A的第i列 A(;,i)

矩阵A的第i行 A(i,:)

复制mxn个矩阵A B=repmat(A,m,n)

找到最小值以及索引 [min_value,index]=min(values)

两值比较大小返回0/1布尔值 a>b

PPP分布在2D空间:根据lambda均值生成点的个数n,然后n个点的坐标在x方向和y方向上满足均匀分布

代码:

function [matrix_UE_BS] = Model_Init(BS_lambda, UE_lambda, R)
clc;close all;
%INPUT: lambda of BS and UEs, the range of BS station
%OUTPUT: the map of UE and its corresponding BS.The first column is the closest BS index, the second column
% is the distance from UE to the closest BS, the third column is the service BS of UE.If the value in the third
%column is 0, that means there is no BS could provide service for UE.

%according to lambda, assign the position of BS and UE.

[BS_pos, BS_num]=poisson2d(BS_lambda);
[UE_pos, UE_num]=poisson2d(UE_lambda);
plot(BS_pos(:, 1), BS_pos(:, 2), 'pr');
hold on;
plot(UE_pos(:, 1), UE_pos(:, 2), '.b');

%compute the distance from BS to every UE
dist = zeros(UE_num,BS_num);
for i= 1:BS_num
    ith_BS_pos=repmat(BS_pos(i,:),UE_num,1);
    d=ith_BS_pos-UE_pos;
    dist(:,i)=sqrt(sum(d.^2,2));
end

%find the minumum distance
[min_dist,index]=min(dist');

%R is the range of BS service. According to the thersold of R,judge UE is in service or not.
matrix_UE_BS=zeros(UE_num,3);
matrix_UE_BS(:,1)=index';
matrix_UE_BS(:,2)=min_dist';

matrix_UE_BS(:,3)=index'.*(R>min_dist');

end

其中引用的函数poisson2d.m代码:

function [ pproc,npoints ] = poisson2d( lambda )
% POISSON2D generate and plot Poisson process in the plane 
%   (square [0,1]x[0,1]). 
% 
% [pproc] = poisson2d(lambda)
%
% Inputs: lambda - intensity of the process
%
% Outputs: pproc - a matrix with 2 columns with coordinates of the
%          points of the process

  % the number of points is Poisson(lambda)-distributed
  npoints = poissrnd(lambda);

  % conditioned that the number of points is N,
  % the points are uniformly distributed
  pproc = rand(npoints, 2);

  % plot the process
  %plot(pproc(:, 1), pproc(:, 2), 'pr')
end