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

📄 inpblock.m

📁 基于MATLAB的辅助设计 简述了矩阵分析的重要性
💻 M
字号:
%
% INPBLOCK is a m-file which enter the tranferfunction of
% the system, controler and the feedback loop. It is possible
% to enter the system in S-format, Matlab-format and State 
% Space-format.

%    Author:  Ole Barup Sorensen, Rapid Data Ltd 

%    Copyright (c) 1989-94 by Rapid Data Ltd
%    Revision 14:15  05/10/94

okflag1=figflag('Input Transfer function in ratio of s',0);
okflag2=figflag('Input in State Space format',0);
okflag3=figflag('Input in Matlab format',0);
okflag=okflag1|okflag2|okflag3;
clear okflag1 okflag2 okflag3

if okflag==0,
if mod_typ==1,
  Fig3=figure('Numbertitle','off','Name','Input Transfer function in ratio of s','Menubar','none',...
  'Units','normal','Position',[(145)/Scx (120)/Scy (350)/Scx (270)/Scy],'Nextplot',...
  'new','Color',[0.5 0.5 0.5]);

  Sx=350;Sy=270; 
  x=0;y=0;
  if tit(2)=='(',
    instr=ratio2s(polyrnd(eval([tit(1),'_num'])));
    instr1=ratio2s(polyrnd(eval([tit(1),'_den'])));
    nummv=eval([tit(1),'_num']);denmv=eval([tit(1),'_den']);
  else   
    instr=ratio2s(polyrnd(Gc_num));instr1=ratio2s(polyrnd(Gc_den));
    nummv=Gc_num;denmv=Gc_den;
  end;

  g(1)=uicontrol(Fig3,'Style','frame','Position',[(15)/Sx (y+45)/Sy (320)/Sx (130)/Sy]);
  g(2)=uicontrol(Fig3,'Style','text','String',['Enter the transfer function of ',tit],...
  'Position',[(x+15)/Sx (y+175)/Sy (290)/Sx (20)/Sy]);
  g(3)=uicontrol(Fig3,'Style','text','String','Numerator',...
  'Position',[(x+20)/Sx (y+150)/Sy (290)/Sx (20)/Sy]);
  g(6)=uicontrol(Fig3,'Style','edit','Position',[(x+20)/Sx (y+110)/Sy (310)/Sx (40)/Sy],...
  'Max',2,'String',instr,'Callback','instr=get(g(6),''String'');');
  g(5)=uicontrol(Fig3,'Style','text','String','Denominator',...
  'Position',[(x+20)/Sx (y+90)/Sy (290)/Sx (20)/Sy]);
  g(7)=uicontrol(Fig3,'Style','edit','Position',[(x+20)/Sx (y+50)/Sy (310)/Sx (40)/Sy],...
  'Max',2,'String',instr1,'Callback','instr1=get(g(7),''String'');');
  set(g(6:7),'Backgroundcolor',[1 1 1]);
  g(8)=uicontrol(Fig3,'Style','text','String','Example:',...
  'Position',[(x+15)/Sx (y+225)/Sy (200)/Sx (20)/Sy]);
  g(9)=uicontrol(Fig3,'Style','text','String','Denominator: 12.5(2s2+3)2(s+1)',...
  'Position',[(x+15)/Sx (y+205)/Sy (290)/Sx (20)/Sy]);
  set([g(2:3),g(5),g(8:9)],'Foregroundcolor',[0 0 0],'HorizontalAlignment','left');

  g(4)=uicontrol(Fig3,'Style','push','String','Done','Position',...
  [(x+15)/Sx (y+15)/Sy (70)/Sx (20)/Sy],'Callback',...
  ['instr=strone(instr);instr1=strone(instr1);',...
   'if instr~=[],',...
      'if tit(2)==''('',',...
         '[',tit(1),'_num,key]=getpoly(instr);',...
         '[',tit(1),'_den,key]=getpoly(instr1);',...
      'else',...
         '[Gc_num,key]=getpoly(instr);[Gc_den,key]=getpoly(instr1);',...
      'end;',...
   'end,',...
  'close(Fig3);clear g Fig3']);

  g(10)=uicontrol(Fig3,'Style','push','String','Cancel','Position',...
  [(x+95)/Sx (y+15)/Sy (70)/Sx (20)/Sy],'Callback',...
  ['if tit(2)==''('',',...
    tit(1),'_num=nummv;',tit(1),'_den=denmv;',...
  'else,',...
    'Gc_num=nummv;Gc_den=denmv;',...
  'end;',...
  'close(Fig3);clear Fig3 g;']);


elseif mod_typ==2,
  Fig3=figure('Numbertitle','off','Name','Input in State Space format','Menubar','none',...
  'Units','normal','Position',[(145)/Scx (70)/Scy (350)/Scx (340)/Scy],'Nextplot',...
  'new','Color',[0.5 0.5 0.5]);
  Sx=350;Sy=340; 
  x=0;y=0;

  if tit(2)=='(',
    [A,B,C,D] = tf2ss(polyrnd(eval([tit(1),'_num'])),polyrnd(eval([tit(1),'_den'])));
  else,   
    [A,B,C,D] = tf2ss(polyrnd(Gc_num),polyrnd(Gc_den));
  end;

  Astr=mf2str(A);
  Bstr=mf2str(B);
  Cstr=mf2str(C); 
  Dstr=mf2str(D);

  g(1)=uicontrol(Fig3,'Style','frame','Position',[(x+15)/Sx (y+45)/Sy (320)/Sx (190)/Sy]);
  g(7)=uicontrol(Fig3,'Style','text','String','Enter the Matrices:',...
  'Position',[(x+15)/Sx (y+235)/Sy (200)/Sx (20)/Sy]);
  g(8)=uicontrol(Fig3,'Style','text','String','A:',...
  'Position',[(x+20)/Sx (y+205)/Sy (15)/Sx (20)/Sy]);
  g(2)=uicontrol(Fig3,'Style','edit','Position',[(x+40)/Sx (y+185)/Sy (290)/Sx (40)/Sy],...
  'String',[Astr '| '],'max',2,'Callback','Astr=get(g(2),''String'');');
  g(9)=uicontrol(Fig3,'Style','text','String','B:',...
  'Position',[(x+20)/Sx (y+160)/Sy (15)/Sx (20)/Sy]);
  g(3)=uicontrol(Fig3,'Style','edit','Position',[(x+40)/Sx (y+140)/Sy (290)/Sx (40)/Sy],...
  'String',[Bstr '| '],'Max',2,'Callback','Bstr=get(g(3),''String'');');
  g(10)=uicontrol(Fig3,'Style','text','String','C:',...
  'Position',[(x+20)/Sx (y+115)/Sy (15)/Sx (20)/Sy]);
  g(4)=uicontrol(Fig3,'Style','edit','Position',[(x+40)/Sx (y+95)/Sy (290)/Sx (40)/Sy],...
  'String',[Cstr '| '],'max',2,'Callback','Cstr=get(g(4),''String'');');
  g(11)=uicontrol(Fig3,'Style','text','String','D:',...
  'Position',[(x+20)/Sx (y+70)/Sy (15)/Sx (20)/Sy]);
  g(5)=uicontrol(Fig3,'Style','edit','Position',[(x+40)/Sx (y+50)/Sy (290)/Sx (40)/Sy],...
  'String',[Dstr '| '],'max',2,'Callback','Dstr=get(g(5),''String'');');
  g(12)=uicontrol(Fig3,'Style','text','String','Example:',...
  'Position',[(x+15)/Sx (y+300)/Sy (200)/Sx (20)/Sy]);
  g(13)=uicontrol(Fig3,'Style','text','String','A:  [12 2 2; 1 2 3; 5 6 7]',...
  'Position',[(x+15)/Sx (y+280)/Sy (400)/Sx (20)/Sy]);
  g(6)=uicontrol(Fig3,'Style','text','String','Remember the brackets !!!',...
  'Position',[(x+15)/Sx (y+260)/Sy (290)/Sx (20)/Sy]);

   set([g(6:13)],'Foregroundcolor',[0 0 0],'HorizontalAlignment','left');
   set(g(2:5),'Backgroundcolor',[1 1 1]);

  g(14)=uicontrol(Fig3,'Style','push','String','Done','Position',...
  [(x+15)/Sx (y+15)/Sy (70)/Sx (20)/Sy],'Callback',...
  ['Astr=strone(Astr);Bstr=strone(Bstr);Cstr=strone(Cstr);Dstr=strone(Dstr);',...
   'A=eval(Astr);B=eval(Bstr);C=eval(Cstr);D=eval(Dstr);ssok=1;ssinpchk;',...
   'if ssok == 1,',...
     'if tit(2)==''('',',...
        '[',tit(1),'_num,',tit(1),'_den]=ss2tf(A,B,C,D);',...
     'else,',...
        '[Gc_num,Gc_den]=ss2tf(A,B,C,D);',...
     'end;close(Fig3);clear Fig3 g A B C D Astr Bstr Cstr Dstr;',...
   'end']);

  g(15)=uicontrol(Fig3,'Style','push','String','Cancel','Position',...
  [(x+95)/Sx (y+15)/Sy (70)/Sx (20)/Sy],'Callback',...
  ['if tit(2)==''('',',...
    tit(1),'_num=nummv;',tit(1),'_den=denmv;',...
  'else,',...
    'Gc_num=nummv;Gc_den=denmv;',...
  'end;',...
  'close(Fig3);clear Fig3 g;']);


elseif mod_typ==3,
  Fig3=figure('Numbertitle','off','Name','Input in Matlab format','Menubar','none',...
  'Units','normal','Position',[(145)/Scx (120)/Scy (350)/Scx (270)/Scy],'Nextplot',...
  'new','Color',[0.5 0.5 0.5]);
  Sx=350;Sy=270; 
  x=0;y=0;

  if tit(2)=='(',
    instr = tf2str(polyrnd(eval([tit(1),'_num'])));
    instr1 = tf2str(polyrnd(eval([tit(1),'_den'])));
    nummv=eval([tit(1),'_num']);denmv=eval([tit(1),'_den']);
  else,   
    instr = tf2str(Gc_num);
    instr1 = tf2str(Gc_den);
    nummv=Gc_num;denmv=Gc_den;
  end;

  g(1)=uicontrol(Fig3,'Style','frame','Position',[(15)/Sx (y+45)/Sy (320)/Sx (130)/Sy]);
  g(2)=uicontrol(Fig3,'Style','text','String',['Enter the transfer function of ',tit],...
  'Position',[(x+15)/Sx (y+175)/Sy (300)/Sx (20)/Sy]);
  g(3)=uicontrol(Fig3,'Style','text','String','Numerator',...
  'Position',[(x+20)/Sx (y+150)/Sy (300)/Sx (20)/Sy]);
  g(6)=uicontrol(Fig3,'Style','edit','Position',[(x+20)/Sx (y+110)/Sy (310)/Sx (40)/Sy],...
  'Max',2,'String',instr,'Callback','instr=get(g(6),''String'');');
  g(5)=uicontrol(Fig3,'Style','text','String','Denominator',...
  'Position',[(x+20)/Sx (y+90)/Sy (300)/Sx (20)/Sy]);
  g(7)=uicontrol(Fig3,'Style','edit','Position',[(x+20)/Sx (y+50)/Sy (310)/Sx (40)/Sy],...
  'Max',2,'String',instr1,'Callback','instr1=get(g(7),''String'');');
  set(g(6:7),'Backgroundcolor',[1 1 1]);
  g(8)=uicontrol(Fig3,'Style','text','String','Example:',...
  'Position',[(x+15)/Sx (y+225)/Sy (200)/Sx (20)/Sy]);
  g(9)=uicontrol(Fig3,'Style','text','String','[12 2 2]   remember the brackets !!!',...
  'Position',[(x+15)/Sx (y+205)/Sy (290)/Sx (20)/Sy]);
  set([g(2:3),g(5),g(8:9)],'Foregroundcolor',[0 0 0],'HorizontalAlignment','left');

  g(4)=uicontrol(Fig3,'Style','push','String','Done','Position',...
  [(x+15)/Sx (y+15)/Sy (70)/Sx (20)/Sy],'Callback',...
  ['instr=strone(instr);instr1=strone(instr1);',...
   'if tit(2)==''('',',...
      tit(1),'_num=eval(instr);',...
      tit(1),'_den=eval(instr1);',...
   'else,',...
      'Gc_num=eval(instr);Gc_den=eval(instr1);',...
   'end;close(Fig3);clear Fig3 g']);

  g(10)=uicontrol(Fig3,'Style','push','String','Cancel','Position',...
  [(x+95)/Sx (y+15)/Sy (70)/Sx (20)/Sy],'Callback',...
  ['if tit(2)==''('',',...
    tit(1),'_num=nummv;',tit(1),'_den=denmv;',...
  'else,',...
    'Gc_num=nummv;Gc_den=denmv;',...
  'end;',...
  'close(Fig3);clear Fig3 g;']);
end;
end;
clear okflag

⌨️ 快捷键说明

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