📄 inpblock.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 + -