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