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

通讯编程文档

开发平台:

Matlab

  1. % opens slider for rolloff factor
  2. function setrloff(faktor,action)
  3. % find simulink system
  4. system = get_param(0,'CurrentSystem');
  5. if isempty(system)
  6.   disp('No system found.');
  7. else
  8.   while ~isempty(get_param(system,'Parent'))
  9.     system = get_param(system,'Parent');
  10.   end;
  11.   % check if system exists
  12.   if ~(exist(system) == 4)
  13.     disp(['no system  ',system,' found.'])
  14.   else
  15.     % check if Transmitter exists.
  16.     if (get_param([system,'/','Transmitter'],'Parent') ~= system)
  17.       disp(['System ',system,' has no Transmitter.'])
  18.     else
  19.       % check if Receiver exists.
  20.       if (get_param([system,'/','Receiver'],'Parent') ~= system)
  21.         disp(['System ',system,' has no Receiver.'])
  22.       else
  23. if (system == 'qamwnymf') | (system == 'qpswnymf') | (system == 'oqpwnymf')
  24.          sname1 = [system,'/','Transmitter/Root-RC transmit filter'];
  25. else
  26. sname1 = [system,'/','Transmitter/Raised-Cosine transmit filter'];
  27. end;
  28.    
  29.         sname2 = [sname1,'_'];
  30. if (system == 'qamwnymf') | (system == 'qpswnymf')  | (system == 'oqpwnymf')
  31.         ename1 = [system,'/','Receiver/Root-RC receive filter'];
  32. else
  33. ename1 = [system,'/','Receiver/Raised-Cosine receive filter'];
  34. end;
  35.    
  36.         ename2 = [ename1,'_'];
  37.         e1=isempty(get_param(sname1,'Parent'));
  38.         e2=isempty(get_param(sname2,'Parent'));
  39.         e3=isempty(get_param(ename1,'Parent'));
  40.         e4=isempty(get_param(ename2,'Parent'));
  41.         if ( e1 | e2 | e3 | e4 )
  42.    disp('Error! Check if the systems');
  43.    disp('''Raised-Cosine'' or ''Root-RC''');
  44.    disp('exist in Transmitter and Receiver!');
  45.         else
  46.           %no argument? Read Rolloff-Factor 
  47.           if nargin < 1
  48.             
  49.      faktor = get_param([sname1],'MaskParam3');
  50.           end;
  51.           if isstr(faktor) faktor = str2num(faktor); end;
  52.           if (nargin<2)
  53.             action = 'start';
  54.           end;
  55.           if (strcmp(action,'start') | strcmp(action,'update'))
  56.              max_limit = 1;
  57.              min_limit = 0;
  58.           end;
  59.           if strcmp(action,'start')
  60.             % do not open new window if one exists
  61.             if (isempty(findobj(0, 'Tag', 'Rolloff')))
  62. set(0,'Units','pixels');
  63. scnsize = get(0,'ScreenSize');
  64.       % open figure window
  65.       figure ('Position', [172, scnsize(4)-466, 100, 400], ...
  66.       'Name', [system,'/','Rolloff'], ...
  67.       'Tag', 'Rolloff', ...
  68.       'NumberTitle', 'off', ...
  69.       'MenuBar', 'none' ...
  70.      );
  71. backcolor = get(gcf,'Color');
  72. if (backcolor == [1 1 1])
  73. scalcolor = [0 0 0];
  74. else
  75. scalcolor = [1 1 1];
  76. end;
  77.       % ---------------------------------------
  78.       % Slider 
  79.       % ---------------------------------------
  80.       text = uicontrol(gcf, ...
  81.       'Tag', 'faktorTextfeld', ...
  82.       'Style', 'text', ...
  83.               'Units', 'normalized', ...
  84.       'Position', [.1 .85 .8 .1], ...
  85.       'BackgroundColor', 'red', ...
  86.       'ForegroundColor', 'white', ...
  87.       'String', sprintf('Roll-offnfactorn%1.3f',faktor) ...
  88.       );
  89.       cb = 'sld=findobj(gcf,''Tag'',''faktorSlider''); val=get(sld,''Value''); setrloff(val,''update'');';
  90.       slider = uicontrol(gcf, ...
  91.       'Tag', 'faktorSlider', ...
  92.       'Style', 'slider', ...
  93.               'Units', 'normalized', ...
  94.       'Position', [.2 .025 .2 .775], ...
  95.       'Min', min_limit, ...
  96.       'Max', max_limit, ...
  97.       'Value', faktor, ...
  98.       'Callback', cb ...
  99.       );
  100.               % Scale
  101.       skala = axes('Parent',gcf, ...
  102.       'Box','off', ...
  103.       'Color',backcolor, ...
  104.               'Units', 'normalized', ...
  105.       'Position',[.8 .060 .2 .700], ...
  106.       'Tag','faktorSkala', ...
  107.       'Visible','on', ...
  108.       'XColor',backcolor, ...
  109.       'XLimMode','manual', ...
  110.       'YColor',scalcolor, ...
  111.       'YLim',[min_limit max_limit], ...
  112.       'YLimMode','manual', ...
  113.       'YScale','linear', ...
  114.       'ZColor',backcolor ...
  115.                       );
  116.             end;
  117.           end;
  118.           if strcmp(action, 'update')
  119.             set(0,'CurrentFigure',findobj(0,'Tag', 'Rolloff'));
  120.             set(findobj(gcf,'Tag','faktorTextfeld'),'String', sprintf('Roll-offnfactorn%1.3f',faktor));
  121.             
  122. set_param(sname1,'MaskParam3',num2str(faktor));
  123. set_param(sname2,'MaskParam3',num2str(faktor));
  124. set_param(ename1,'MaskParam3',num2str(faktor));
  125. set_param(ename2,'MaskParam3',num2str(faktor));
  126.             drawnow;
  127.           end;
  128.         end;
  129.       end;
  130.     end;
  131.   end;
  132. end;
  133. clear action;