position.m
上传用户:m_sun_001
上传日期:2014-07-30
资源大小:1115k
文件大小:1k
源码类别:

matlab例程

开发平台:

Matlab

  1. % Program 6-2
  2. % positon.m
  3. %
  4. % Positioning of the access terminals in the area of the radius r.
  5. %
  6. % Input arguments
  7. %   r     : The radius r that an access point is an origin.
  8. %   n     : The number of access terminals.
  9. %   h     : h=0 -> z=0  h=1 -> z=1乣4
  10. %
  11. % Output argument
  12. %   posxy : (x,y,z)
  13. %
  14. % Programmed by M.Okita
  15. % Checked by H.Harada
  16. %
  17. function [posxy] = position(r, n, h)
  18. ms = 4 * r;                                         % calculation of the number of maximum position
  19. ms = ms + 4 * sum(fix(sqrt(r^2-[1:r-1].^2)));
  20. if n > ms
  21.     error('n exceeds the number of position.');
  22. end
  23. posxy = zeros(n,3);                                                 % initialize
  24. for ii=1:n
  25.     while 1
  26.         xx  = round(r*rand) * sign(sin(2*pi*rand));                 % x and y are decided at random
  27.         yy  = round(r*rand) * sign(cos(2*pi*rand));
  28.         if xx^2+yy^2 <= r^2 & (xx~=0 | yy~=0)                       % (xx,yy) is not (0,0) in the area
  29.             if length(find(posxy(:,1)==xx & posxy(:,2)==yy)) == 0   % (xx,yy) are vacant
  30.                 break
  31.             end
  32.         end
  33.     end
  34.     posxy(ii,[1 2]) = [xx yy];
  35.     if h == 1
  36.         while 1
  37.             posxy(ii,3) = round(50*rand) / 10;
  38.             if 1 <= posxy(ii,3) & posxy(ii,3) <= 4
  39.                 break
  40.             end
  41.         end
  42.     end
  43. end
  44. %%%%%%%%%%%%%%%%%%%%%% end of file %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%