apkconst.m
上传用户:loeagle
上传日期:2013-03-02
资源大小:1236k
文件大小:2k
源码类别:

通讯编程文档

开发平台:

Matlab

  1. function yy=apkconst(nir, air, pir, plot_type)
  2. %APKCONST Plot a combined circular ASK-PSK signal constellation.
  3. %   APKCONST(NUMSIG, AMP, PHASE) plots a circle signal constellation whose kth
  4. %   circle has NUMSIG(k) evenly spaced constellation points at radius AMP(k).
  5. %   One point on the kth circle has phase PHASE(k). NUMSIG, AMP, and PHASE are
  6. %   vectors of the same length.
  7. %
  8. %   APKCONST(NUMSIG, AMP) is the same as the syntax above, except that one
  9. %   point on each circle has zero phase.
  10. %
  11. %   APKCONST(NUMSIG) is the same as the syntax above, except that the kth
  12. %   circle has radius k.
  13. %
  14. %   Y = APKCONST(...) outputs a complex vector whose real part is the in-phase
  15. %   component and whose imaginary part is the quadrature component.  This
  16. %   syntax does not produce a plot.
  17. %   Copyright 1996-2001 The MathWorks, Inc.
  18. %   $Revision: 1.11 $
  19. error(nargchk(1,4,nargin));
  20. m = length(nir);
  21. if nargin <= 1
  22.     air = [1:m];
  23. end;
  24. if nargin <= 2
  25.     pir = zeros(1,m);
  26. end;
  27. if nargin <= 3
  28.     plot_type = 'r*';
  29. end;
  30. if isempty(plot_type)
  31.     plot_type = 'r*';
  32. end
  33. if nargout < 1
  34.     plot_flag = 1;
  35. else
  36.     plot_flag = 0;
  37. end;
  38. j=sqrt(-1);
  39. z = exp(j*[0:100]*pi/50);
  40. x=real(z); y=imag(z);
  41. if plot_flag
  42.     cax = newplot;
  43.     hold_state = ishold;
  44.     plot(x*max(air), y*max(air));
  45.     if ~hold_state
  46.         hold on
  47.     end;
  48.     zz=axis*1.05;
  49.     plot(zz(1:2),[0,0],'k');
  50.     plot([0,0],zz(3:4),'k');
  51. end;
  52. z=[];
  53. for i = 1:m
  54.     for k = 1:nir(i)
  55.         z = [z air(i)*exp(j*((k-1)*2*pi/nir(i)+pir(i)))];
  56.     end;
  57.     if plot_flag
  58.         if (i ~= m)
  59.             plot(x*air(i), y*air(i));
  60.         end;
  61.     end;
  62. end;
  63. % plot the ASK/PSK signal.
  64. if plot_flag
  65.     if findstr(lower(plot_type), 'n')
  66.         tmp = plot(z, 'r.');
  67. set(tmp, 'MarkerSize', 12)
  68. for i = 1 : length(z)
  69.             text(real(z(i)), imag(z(i)), num2str(i-1));
  70. end
  71.     else
  72.         tmp = plot(z, plot_type);
  73.         if findstr(lower(plot_type), '.')
  74.             set(tmp, 'MarkerSize', 12)
  75. end;
  76.     end
  77.     if ~hold_state
  78.         axis('equal');
  79.         axis('off');
  80.         text(zz(1)+(zz(2)-zz(1))/4, zz(3)-(zz(4)-zz(3))/15, 'ASK/PSK Constellation');
  81.         hold off;
  82.     end;
  83. else
  84.     yy = z;
  85. end;