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

通讯编程文档

开发平台:

Matlab

  1. function nyqui(alpha,action)
  2. %impulse response and Fourier transform of raised-cosine pulse
  3. warning off;         % avoid devide by zero warning
  4. if nargin == 0 alpha = .5; end;
  5. if isstr(alpha) alpha = str2num(alpha); end;
  6. if (alpha>1) alpha = 1; end;
  7. if (alpha<0) alpha = 0; end;
  8. if (nargin<2)
  9.   action = 'start';
  10. end;
  11. if (strcmp(action,'start') | strcmp(action,'update'))
  12. % define constants
  13. laenge = 5;
  14. aufloesung = 256;
  15. % generate time basis and raised cosine pulse
  16. x  = linspace(-laenge-1,laenge,aufloesung);
  17.         x2 = linspace(-laenge,laenge+1,aufloesung);
  18. b = nyqro(alpha, x);
  19. % define frequency
  20. nw = linspace(-1,1,aufloesung);
  21. % plot spectrum
  22. th = nyqrofr(alpha, nw);
  23. end;
  24. if strcmp(action,'start')
  25. % open Figure window
  26. set(0,'Units','pixels');
  27. scnsize = get(0,'ScreenSize');
  28. figure ('Position', [0.05*scnsize(3)   0.3*scnsize(4)   0.9*scnsize(3)   0.4*scnsize(4)], ...
  29. 'Name', 'Impulse Response and Fourier Transform of Raised-Cosine Pulse', ...
  30. 'Tag', 'NyquistRolloff', ...
  31. 'NumberTitle', 'off' ...
  32. );
  33. % -----------------------------------
  34. % Slider for Rolloff Factor 
  35. % -----------------------------------
  36. text = uicontrol(gcf, ...
  37. 'Tag', 'NyqTextfeld', ...
  38. 'Style', 'text', ...
  39.         'Units', 'normalized', ...
  40. 'Position', [.01 .82 .08 .13], ...
  41. 'BackgroundColor', 'red', ...
  42. 'ForegroundColor', 'white', ...
  43. 'String', ['Roll-off ',13,'factor',13,num2str(alpha)] ...
  44. );
  45. cb = 'nyqui(get(findobj(gcf,''Tag'',''NyqSlider''),''Value''),''update'');';
  46. slider = uicontrol(gcf, ...
  47. 'Tag', 'NyqSlider', ...
  48. 'Style', 'slider', ...
  49.         'Units', 'normalized', ...
  50. 'Position', [.04 .2 .02 .6], ...
  51. 'Min', 0, ...
  52. 'Max', 1, ...
  53. 'Value', alpha, ...
  54. 'Callback', cb ...
  55. );
  56. % ---------------------------------
  57. % Plot 1: Nyquist Rolloff Pulse
  58. % ---------------------------------
  59. subplot(1,2,1); plot(x,b,'b-',x2,b,'g--','EraseMode','background','linewidth',1); set(gca, 'Tag', 'NyqImpulsantwort');
  60. pos = get(gca,'Position'); pos = [pos(1,1)-.25/2*pos(1,3)+.03 pos(1,2) 1.25*pos(1,3) pos(1,4)];
  61. set(gca,'Position',pos); clear pos;
  62. set(gcf,'DefaultTextColor','m')
  63. xlabel('t/T');
  64. ylabel('g(t/T)');
  65. title('Impulse Response');
  66. set(gca,'XLimMode','manual');
  67. set(gca,'XLim', [-laenge laenge]);
  68. set(gca,'XTick', [-laenge : 1 : laenge]);
  69. set(gca,'YLimMode','manual');
  70. set(gca,'YLim', [-.22 1]);
  71. grid
  72. % -----------------------
  73. % Plot 2: Frequency response
  74. % -----------------------
  75. subplot(1,2,2); plot(nw,[th'],'EraseMode','background','linewidth',1); set(gca, 'Tag', 'NyqFrequenzgang');
  76.     pos = get(gca,'Position'); pos = [pos(1,1)+.03 pos(1,2) 1.1*pos(1,3) pos(1,4)];
  77. set(gca,'Position',pos); clear pos;
  78. set(gcf,'DefaultTextColor','m')
  79. xlabel('f T');
  80. ylabel('G(f/T)/T');
  81. title('Fourier Transform');
  82. set(gca,'XLimMode','manual');
  83. set(gca,'XLim', [-1 1]);
  84. set(gca,'YLimMode','manual');
  85. set(gca,'YLim', [ 0 1.125]);
  86. grid
  87. axis([-1 1 -0.2 1.2]);
  88. drawnow;
  89. end;
  90. if strcmp(action, 'update')
  91.         set(0,'CurrentFigure',findobj(0,'Tag', 'NyquistRolloff'));
  92. set(findobj(gcf,'Tag','NyqTextfeld'),'String', ['Roll-off ',13,'factor',13,num2str(alpha)]);
  93. set(get(findobj(gcf,'Tag','NyqImpulsantwort'),'Children'),'YData',b);
  94. set(get(findobj(gcf,'Tag','NyqFrequenzgang'),'Children'),'YData',th);
  95. drawnow;
  96. end;
  97. warning on;
  98. clear action;