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

📄 qputobj.m

📁 机器人控制仿真程序一书的所有源代码
💻 M
字号:
function qputobj(flag)
% QPUTOBJ Read frequency weight files. (Utility Function)
%         QPUTOBJ reads and plots frequency weight files from within the
%         freuquency weight IDE.

% Author: Craig Borghesani
% 10/10/93
% Copyright (c) 1995-98 by The MathWorks, Inc.
%       $Revision: 1.4 $

a=gca;
f2=gcf;
f=get(f2,'userdata');
bthan=get(f,'userdata');

infmat = get(bthan(16),'userdata');
han = get(bthan(26),'userdata');
objects = get(han(3),'userdata');
lims = get(han(11),'userdata');

proc_str=[];
if infmat(25,2)>1, proc_str=['(',int2str(infmat(25,2)),')']; end

if flag==0,
 [fname,pth]=uigetfile('*.fwf',['Open Frequency Weight Function ',proc_str]);
 if isstr(fname),
  delete(objects);
  eval(['load ',pth,fname,' -mat']);
  obj_len = length(obj_data(:,1));
  xmin = min(obj_data(:,1));
  xmax = max(obj_data(:,3));
  set(a,'xlim',[min(lims(1),xmin),max(lims(2),xmax)]);
  lims(1:2) = [min(lims(1),xmin),max(lims(2),xmax)];
  ct=1;
  for k = 1:obj_len,
   str='on';
   if ~obj_data(k,5), str = 'off'; end
   pt0(1) = obj_data(k,1);
   pt0(2) = 10^((log10(lims(4))-log10(lims(3)))*obj_data(k,2)+log10(lims(3)));
   if rem(k,2),
    objects(k) = line('xdata',pt0(1),'ydata',pt0(2),...
                      'marker','o','color','g','markersize',4,...
                      'userdata',pt0,'erase','xor');
   else
    pt1(1) = obj_data(k,3);
    pt1(2) = 10^((log10(lims(4))-log10(lims(3)))*obj_data(k,4)+log10(lims(3)));
    clr = obj_data(k,6:8);
    objects(k) = line('xdata',[pt0(1),pt1(1)],'ydata',[pt0(2),pt1(2)],...
                      'linestyle','-','color',clr,'erase','xor',...
                      'userdata',clr,...
                      'buttondownfcn','qbtnpres',...
                      'vis',str);
   end
  end
  set(han(3),'userdata',objects);
  set(han(11),'userdata',lims);
 end
elseif flag==1,
 [fname,pth]=uiputfile('*.fwf',['Save Frequency Weight Function ',proc_str]);
 if isstr(fname),
  obj_len = length(objects);
  for k = 1:obj_len,
   vis = 1;
   if strcmp(get(objects(k),'vis'),'off'), vis = 0; end
   if rem(k,2),
    data = get(objects(k),'userdata');
    x = data(1);
    yper = (log10(data(2))-log10(lims(3)))/(log10(lims(4))-log10(lims(3)));
    obj_data(k,:) = [x,yper,0,0,vis,0,0,0];
   else
    data = get(objects(k+1),'userdata');
    clr = get(objects(k),'userdata');
    x2 = data(1);
    y2per = (log10(data(2))-log10(lims(3)))/(log10(lims(4))-log10(lims(3)));
    obj_data(k,:) = [x,yper,x2,y2per,vis,clr];
   end
  end
  eval(['save ',pth,fname,' obj_data;']);
 end
end

⌨️ 快捷键说明

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