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

通讯编程文档

开发平台:

Matlab

  1. % Convolution of Raised Cosine Pulses
  2. function convnyq(alpha,action)
  3. if nargin == 0 alpha = .5; end;
  4. if isstr(alpha) alpha = str2num(alpha); end;
  5. if (alpha>1) alpha = 1; end;
  6. if (alpha<0) alpha = 0; end;
  7. if (nargin<2)
  8.   action = 'start';
  9. end;
  10. if (strcmp(action,'start') | strcmp(action,'update'))
  11. rolloff = num2str(alpha);
  12. aufloesung = 200;
  13. laenge = 5;
  14. x1 = linspace(-laenge,laenge,aufloesung);
  15. g1 = nyqro(alpha, x1);
  16. %convolution
  17. c = conv(g1,g1); 
  18. rng = -2 * x1(1);       % maximum axis value
  19. anz = (length(c)-1)/2;  % number of axis values for each side
  20. c = c ./ (anz/rng);     % amplitude correction
  21. x2 = zeros(size(c));    % compute new x coordinates
  22. for k=1 : length(c)
  23.   x2(k) = (k-anz)*rng/anz;
  24. end;
  25. end;
  26. if strcmp(action,'start')
  27. set(0,'Units','pixels');
  28. scnsize = get(0,'ScreenSize');
  29. % open window
  30. figure ('Position', [0.25*scnsize(3)   0.15*scnsize(4)   0.7*scnsize(3)   0.7*scnsize(4)], ...
  31. 'Name', 'Convolution of Raised-Cosine Pulses', ...
  32. 'Tag', 'ConvNyquistRolloff', ...
  33. 'NumberTitle','off' ...
  34. );
  35. set(gcf,'DefaultTextColor','m');
  36. backcolor = get(gcf,'Color');
  37. % -----------------------------------
  38. % Slider for Rolloff Factor 
  39. % -----------------------------------
  40. text = uicontrol(gcf, ...
  41. 'Tag', 'ConvNyqTextfeld', ...
  42. 'Style', 'text', ...
  43.         'Units', 'normalized', ...
  44. 'Position', [.01 .85 .08 .1], ...
  45. 'BackgroundColor', 'red', ...
  46. 'ForegroundColor', 'white', ...
  47. 'String', sprintf('Roll-offnfactorn%1.3f',alpha) ...
  48. );
  49. cb = 'convnyq(get(findobj(gcf,''Tag'',''ConvNyqSlider''),''Value''),''update'');';
  50. slider = uicontrol(gcf, ...
  51. 'Tag', 'ConvNyqSlider', ...
  52. 'Style', 'slider', ...
  53.         'Units', 'normalized', ...
  54. 'Position', [.04 .2 .02 .6], ...
  55. 'Min', 0, ...
  56. 'Max', 1, ...
  57. 'Value', alpha, ...
  58. 'Callback', cb ...
  59. );
  60. % ---------------------------------
  61. % Plot 1: Raised Cosine Pulse
  62. % ---------------------------------
  63. subplot(2,2,1), plot(x1,g1,'EraseMode','background')
  64. title('Raised-Cosine Pulse') 
  65. xlabel('t/T')
  66. ylabel('g(t/T)')
  67. set(gca,'Tag','ConvNyqPlot1');
  68. pos1 = get(gca, 'Position');
  69. set(gca,'Position',[pos1(1)-.1/2*pos1(3)+.04 pos1(2) 1.1*pos1(3) pos1(4)]);
  70. pos1 = get(gca, 'Position');
  71. set(gca,'YLimMode','manual');
  72. set(gca,'YLim',[-.23 1]);
  73. set(gca,'XTick', [-5 :1: 5]);
  74. grid
  75. % ---------------------------------
  76. % Plot 2: Raised Cosine Pulse
  77. % ---------------------------------
  78. subplot(2,2,2), plot(x1,g1,'EraseMode','background')
  79. title('Raised Cosine Pulse') 
  80. xlabel('t/T')
  81. %ylabel('g(t/T)')
  82. set(gca,'Tag','ConvNyqPlot2');
  83. pos2 = get(gca, 'Position');
  84. set(gca,'Position',[pos2(1)-.1/2*pos1(3)+.04 pos2(2) 1.1*pos2(3) pos2(4)]);
  85. pos2 = get(gca, 'Position');
  86. set(gca,'YLimMode','manual');
  87. set(gca,'YLim',[-.23 1]);
  88. set(gca,'XTick', -5: 1 : 5);
  89. grid
  90. % ------------------
  91. % Convolution star
  92. % ------------------
  93. text = uicontrol(gcf, ...
  94. 'Style', 'text', ...
  95.         'Units', 'normalized', ...
  96. 'Position', [pos1(1)+pos1(3)+0.005, pos1(2)+pos1(4)/2-.15/2, (pos2(1)-pos1(1)-pos1(3))-0.005, .10], ...
  97. 'FontSize', 30, ...
  98. 'BackgroundColor', backcolor, ...
  99. 'ForegroundColor', 'm', ...
  100. 'String', '*' ...
  101. );
  102. % ----------------------------------------------------------
  103. % Plot 3: Convolution
  104. % ----------------------------------------------------------
  105. subplot(2,2,3), plot(x2,c,'EraseMode','background')
  106. title('Result of Convolution') 
  107. xlabel('t/T')
  108. ylabel('g(t/T)')
  109. set(gca,'Tag','ConvNyqProdukt');
  110. pos3 = get(gca, 'Position');
  111. set(gca,'Position',[pos1(1) pos3(2) pos1(3)+pos2(3)+(pos2(1)-pos1(1)-pos1(3)) pos3(4)]);
  112. set(gcf,'DefaultTextColor','m');
  113. set(gca,'XLimMode','manual');
  114. set(gca,'XLim',[-rng rng]);
  115. set(gca,'YLimMode','manual');
  116. set(gca,'YLim',[-0.23 1]);
  117. set(gca,'XTick', -10: 1 : 10);
  118. grid
  119. end;
  120. if strcmp(action, 'update')
  121.     set(0,'CurrentFigure',findobj(0,'Tag', 'ConvNyquistRolloff'));
  122. set(findobj(gcf,'Tag','ConvNyqTextfeld'),'String', sprintf('Roll-offnfactorn%1.3f',alpha));
  123. set(get(findobj(gcf,'Tag','ConvNyqPlot1'),'Children'),'YData',g1);
  124. set(get(findobj(gcf,'Tag','ConvNyqPlot2'),'Children'),'YData',g1);
  125. set(get(findobj(gcf,'Tag','ConvNyqProdukt'),'Children'),'YData',c);
  126. drawnow;
  127. end;
  128. clear action;