⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setrloff.m

📁 很多通信系统的matlab程序,便于修改调用
💻 M
字号:
% opens slider for rolloff factor
function setrloff(faktor,action)

% find simulink systemsystem = get_param(0,'CurrentSystem');if isempty(system)
  disp('No system found.');
else
  while ~isempty(get_param(system,'Parent'))
    system = get_param(system,'Parent');
  end;

  % check if system exists  if ~(exist(system) == 4)
    disp(['no system  ',system,' found.'])
  else

    % check if Transmitter exists.
    if (get_param([system,'/','Transmitter'],'Parent') ~= system)
      disp(['System ',system,' has no Transmitter.'])
    else

      % check if Receiver exists.
      if (get_param([system,'/','Receiver'],'Parent') ~= system)
        disp(['System ',system,' has no Receiver.'])
      else

	if (system == 'qamwnymf') | (system == 'qpswnymf') | (system == 'oqpwnymf')        	sname1 = [system,'/','Transmitter/Root-RC transmit filter'];	else		sname1 = [system,'/','Transmitter/Raised-Cosine transmit filter'];	end;   
        sname2 = [sname1,'_'];
	if (system == 'qamwnymf') | (system == 'qpswnymf')  | (system == 'oqpwnymf')       		ename1 = [system,'/','Receiver/Root-RC receive filter'];	else		ename1 = [system,'/','Receiver/Raised-Cosine receive filter'];	end;   
        ename2 = [ename1,'_'];

        e1=isempty(get_param(sname1,'Parent'));
        e2=isempty(get_param(sname2,'Parent'));
        e3=isempty(get_param(ename1,'Parent'));
        e4=isempty(get_param(ename2,'Parent'));

        if ( e1 | e2 | e3 | e4 )
	   disp('Error! Check if the systems');
	   disp('''Raised-Cosine'' or ''Root-RC''');
	   disp('exist in Transmitter and Receiver!');
        else

          %no argument? Read Rolloff-Factor           if nargin < 1
            
	     faktor = get_param([sname1],'MaskParam3');	          end;
          if isstr(faktor) faktor = str2num(faktor); end;

          if (nargin<2)
            action = 'start';
          end;

          if (strcmp(action,'start') | strcmp(action,'update'))

             max_limit = 1;
             min_limit = 0;
	
          end;	

          if strcmp(action,'start')

            % do not open new window if one exists            if (isempty(findobj(0, 'Tag', 'Rolloff')))

	set(0,'Units','pixels');	scnsize = get(0,'ScreenSize');	      % open figure window	      figure ('Position', [172, scnsize(4)-466, 100, 400], ...
		      'Name', [system,'/','Rolloff'], ...
		      'Tag', 'Rolloff', ...
		      'NumberTitle', 'off', ...
		      'MenuBar', 'none' ...
		     );
		backcolor = get(gcf,'Color');	if (backcolor == [1 1 1])		scalcolor = [0 0 0];	else		scalcolor = [1 1 1];	end;	      % ---------------------------------------
	      % Slider 	      % ---------------------------------------
	
	      text = uicontrol(gcf, ...
		      'Tag', 'faktorTextfeld', ...
		      'Style', 'text', ...              'Units', 'normalized', ...
		      'Position', [.1 .85 .8 .1], ...
		      'BackgroundColor', 'red', ...
		      'ForegroundColor', 'white', ...
		      'String', ['Rolloff-',13,'Factor',13,num2str(faktor)] ...
		      );
	
	      cb = 'sld=findobj(gcf,''Tag'',''faktorSlider''); val=get(sld,''Value''); setrloff(val,''update'');';

	      slider = uicontrol(gcf, ...
		      'Tag', 'faktorSlider', ...
		      'Style', 'slider', ...              'Units', 'normalized', ...
		      'Position', [.2 .025 .2 .775], ...
		      'Min', min_limit, ...
		      'Max', max_limit, ...
		      'Value', faktor, ...
		      'Callback', cb ...
		      );
              % Scale	      skala = axes('Parent',gcf, ...
		      'Box','off', ...
		      'Color',backcolor, ...              'Units', 'normalized', ...
		      'Position',[.8 .060 .2 .700], ...
		      'Tag','faktorSkala', ...
		      'Visible','on', ...
		      'XColor',backcolor, ...
		      'XLimMode','manual', ...
		      'YColor',scalcolor, ...
		      'YLim',[min_limit max_limit], ...
		      'YLimMode','manual', ...
		      'YScale','linear', ...
		      'ZColor',backcolor ...
                      );
            end;
          end;
          if strcmp(action, 'update')
            set(0,'CurrentFigure',findobj(0,'Tag', 'Rolloff'));
            set(findobj(gcf,'Tag','faktorTextfeld'),'String', ['Rolloff-',13,'Factor',13,num2str(faktor)]);
            	set_param(sname1,'MaskParam3',num2str(faktor));	set_param(sname2,'MaskParam3',num2str(faktor));	set_param(ename1,'MaskParam3',num2str(faktor));	set_param(ename2,'MaskParam3',num2str(faktor));            drawnow;
          end;
        end;
      end;
    end;
  end;
end;

clear action;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -