📄 mimomsfsimgui.m
字号:
if any(iscellempty(Xmnummt)) | any(iscellempty(Xmdenmt)) | ...
any(iscellempty(Xpnummt)) | any(iscellempty(Xpdenmt)) | ...
any(iscellempty(qnummt)) | any(iscellempty(qdenmt))
errordlg('Not enough data entered');
return
end
global time st_size M1_handle1 X_handle1 Plot_handle1 M1_handle2
global E1_handle1 Keep_handle axis_handle figMSF_h
if ~exist('COLOR_MAP')
global COLOR_MAP
end
if exist('figMSF_h') & ishandle(figMSF_h)
if ishandle(figMSF_h)
figure(figMSF_h);
end
return
end
[figMSF_h]=crfig(30,30,600,600,'Time Response of the Model State Feedback MIMO system',[.5 .55 .6],'figure','on');
set(figMSF_h,'DeleteFcn',['clear global M1_handle1 X_handle1 Plot_handle1 M1_handle2 ',...
'E1_handle1 Keep_handle axis_handle time st_size figMSF_h']);
axis_handle(1,1)=subplot('position',[0.1 0.65 0.8 0.275]);
set(gca,'color',[.55 .55 .65]);
ylabel('Control efforts');
axis_handle(2,1)=subplot('position',[0.1 0.325 0.8 0.275]);
set(gca,'color',[.55 .55 .65]);
ylabel('Outputs ( i )');
xlabel('Time');
uicontrol('Parent',figMSF_h, ...
'Style','frame',...
'Position',[2 2 125 100]);
if degree_freedom==1
uicontrol('Parent',figMSF_h, ...
'Style','frame',...
'Position',[129 2 305 41]);
uicontrol('Parent',figMSF_h, ...
'Style','frame',...
'Position',[129 45 305 57]);
if length(Epsilon{1}) < maxcol
Epsilon{1}(length(Epsilon{1})+1:maxcol)=Epsilon{1}(1);
end
temp=295/maxcol;
for i=1:maxcol
E1_handle1(i)=uicontrol(figMSF_h,...
'Style','edit',...
'Position',[135+(i-1)*temp 60 temp-3 20],...
'Backgroundcolor','w',...
'Foregroundcolor','k',...
'Enable','on',...
'HorizontalAlignment','Center',...
'String',num2str(Epsilon{1}(i)),...
'Callback',['Epsilon{1}(' num2str(i), ...
')=str2num(get(gcbo,''string''));']);
end
Plot_handle1(1)=uicontrol('Parent',figMSF_h, ...
'Position',[150 8 160 25], ...
'Backgroundcolor','w',...
'Foregroundcolor','k',...
'String','From setpoint to output|From disturbance to output', ...
'Style','popupmenu', ...
'Tag','PopupMenu1', ...
'Value',1,...
'Enable','on');
uicontrol(figMSF_h,...
'Style','push',...
'Position',[327 10 90 25],...
'Backgroundcolor',[ 0 .5 .5 ],...
'String','Close Window',...
'Callback','close(figMSF_h(ishandle(figMSF_h))); clear figMSF_h;');
else
uicontrol('Parent',figMSF_h, ...
'Style','frame',...
'Position',[129 2 305 31]);
uicontrol('Parent',figMSF_h, ...
'Style','frame',...
'Position',[129 35 305 67]);
if length(Epsilon) < 2
Epsilon(2)=Epsilon(1);
end
if length(Epsilon{1}) < maxcol
Epsilon{1}(length(Epsilon{1})+1:maxcol)=Epsilon{1}(1);
end
if length(Epsilon{2}) < maxcol
Epsilon{2}(length(Epsilon{2})+1:maxcol)=Epsilon{2}(1);
end
temp=280/maxcol;
for i=1:maxcol
E1_handle1(i)=uicontrol(figMSF_h,...
'Style','edit',...
'Position',[150+(i-1)*temp 60 temp-3 20],...
'Backgroundcolor','w',...
'Foregroundcolor','k',...
'Enable','on',...
'HorizontalAlignment','Center',...
'String',num2str(Epsilon{1}(i)),...
'Callback',['Epsilon{1}(' num2str(i), ...
')=str2num(get(gcbo,''string''));']);
E1_handle1(maxcol+i)=uicontrol(figMSF_h,...
'Style','edit',...
'Position',[150+(i-1)*temp 40 temp-3 20],...
'Backgroundcolor','w',...
'Foregroundcolor','k',...
'Enable','on',...
'HorizontalAlignment','Center',...
'String',num2str(Epsilon{2}(i)),...
'Callback',['Epsilon{2}(' num2str(i), ...
')=str2num(get(gcbo,''string''));']);
end
uicontrol(figMSF_h,...
'Style','text',...
'Position',[130 58 20 20],...
'String','er');
uicontrol(figMSF_h,...
'Style','text',...
'Position',[130 38 20 20],...
'String','e');
Plot_handle1(1)=uicontrol('Parent',figMSF_h, ...
'Position',[140 3 180 25], ...
'Backgroundcolor','w',...
'Foregroundcolor','k',...
'String','From setpoint to output|From disturbance to output', ...
'Style','popupmenu', ...
'Tag','PopupMenu1', ...
'Value',1,...
'Enable','on');
uicontrol(figMSF_h,...
'Style','push',...
'Position',[327 7 90 20],...
'Backgroundcolor',[ 0 .5 .5 ],...
'String','Close Window',...
'Callback','close(figMSF_h(ishandle(figMSF_h))); clear figMSF_h;');
end
uicontrol('Parent',figMSF_h, ...
'Style','frame',...
'Position',[436 2 133 100]);
uicontrol('Parent',figMSF_h, ...
'Style','frame',...
'Position',[2 104 150 50]);
uicontrol('Parent',figMSF_h, ...
'Style','frame',...
'Position',[154 104 415 50]);
uicontrol(figMSF_h,...
'Style','text',...
'Position',[160 127 250 20],...
'Foregroundcolor','k',...
'HorizontalAlignment','Left',...
'String','Current process parameters : (Uncertain parameter x)');
if isempty(x) | length(x)~= length(vub)
x=(vub+vlb)/2;
end
X_handle1=uicontrol(figMSF_h,...
'Style','edit',...
'Position',[160 112 402 20],...
'Backgroundcolor','w',...
'HorizontalAlignment','Center',...
'String',lessblnk(num2str(x)),...
'Callback',['temp=str2num(get(gcbo,''String''));',...
'if length(temp)~=length(vub) errordlg(''Size mismatched!'');',...
'elseif any(temp>vub) | any(temp<vlb) errordlg(''Out off bound!'');',...
'else x=temp; end']);
uicontrol(figMSF_h,...
'Style','text',...
'Position',[10 127 100 20],...
'Foregroundcolor','k',...
'HorizontalAlignment','Left',...
'String','Simulation time :');
time=20;
uicontrol(figMSF_h,...
'Style','edit',...
'Position',[90 130 50 18],...
'Backgroundcolor','w',...
'HorizontalAlignment','Center',...
'String',num2str(time),...
'Callback','time=str2num(get(gcbo,''String''));');
uicontrol(figMSF_h,...
'Style','text',...
'Position',[10 105 100 20],...
'Foregroundcolor','k',...
'HorizontalAlignment','Left',...
'String','Time Step size :');
st_size='auto';
uicontrol(figMSF_h,...
'Style','edit',...
'Position',[90 108 50 18],...
'Backgroundcolor','w',...
'HorizontalAlignment','Center',...
'String',st_size,...
'Callback',['temp=get(gcbo,''String'');',...
'if strcmp(temp,''auto'') st_size=temp;',...
'else st_size=str2num(temp); end']);
uicontrol(figMSF_h,...
'Style','text',...
'Position',[10 80 100 20],...
'Foregroundcolor','k',...
'HorizontalAlignment','Left',...
'String','I/O elements : ( i , j )');
M1_handle1=Xuiarray([20 30 90 50],maxrow,maxcol,0,0,...
'push','p_index=1;imcmenuM;','','',4700,figMSF_h);
uicontrol(figMSF_h,...
'Style','text',...
'Position',[135 80 140 20],...
'Foregroundcolor','k',...
'HorizontalAlignment','Left',...
'String','Filter time constants:');
if degree_freedom==1
temp=['mimo_MSF1DF_sim(Xpnummt,Xpdenmt,Xpdeadmt,Xmnummt,Xmdenmt,Xmdeadmt,',...
'Xpdnummt,Xpddenmt,q,order,qnummt,qdenmt,qdeadmt,y,Satub,Satlb);'];
else
temp=['mimo_MSF2DF_sim(Xpnummt,Xpdenmt,Xpdeadmt,Xmnummt,Xmdenmt,Xmdeadmt,',...
'Xpdnummt,Xpddenmt,q,order,qnummt,qdenmt,qdeadmt,x,y,Epsilon,Satub,',...
'Satlb,qdnum,qdden);'];
end
uicontrol(figMSF_h,...
'Style','push',...
'Position',[460 10 80 25],...
'Backgroundcolor',[ 0 .5 .5 ],...
'String','Simulate',...
'Callback',temp);
Keep_handle=uicontrol(figMSF_h,...
'Style','checkbox',...
'Position',[445 45 115 20],...
'HorizontalAlignment','Left',...
'Value',0,...
'String','Keep existing plots');
uicontrol(figMSF_h,...
'Style','checkbox',...
'Position',[445 70 115 20],...
'HorizontalAlignment','Left',...
'Value',1,...
'enable','off',...
'String','Show Control Efforts',...
'callback',['temp=get(gcbo,''Value'');',...
'if temp set(axis_handle(2),''position'',[0.1 0.325 0.8 0.275]);',...
'set(axis_handle(1),''visible'',''on'');',...
'set(get(axis_handle(1),''child''),''visible'',''on'');',...
'else set(axis_handle(1),''visible'',''off'');',...
'set(get(axis_handle(1),''child''),''visible'',''off'');',...
'set(axis_handle(2),''position'',[0.1 0.325 0.8 0.65]); end']);
Plot_handle1(2)=uicontrol(figMSF_h,...
'Style','checkbox',...
'Position',[20 5 90 20],...
'HorizontalAlignment','Left',...
'Value',0,...
'String','Plot new figure');
M1_handle2(:,1)=Xuiarray([60 565 15*maxrow 15],1,maxrow,0,[0],...
'push','p_index=1;imcmenuM;','','',4700,figMSF_h);
COLOR_MAP=colormap;
temp=round(64/maxrow/maxcol)-1;
set(M1_handle1(1),'Backgroundcolor',COLOR_MAP(temp,:));
if degree_freedom==1
mimo_MSF1DF_sim(Xpnummt,Xpdenmt,Xpdeadmt,Xmnummt,Xmdenmt,Xmdeadmt,Xpdnummt,Xpddenmt,...
q,order,qnummt,qdenmt,qdeadmt,y,Satub,Satlb);
else
mimo_MSF2DF_sim(Xpnummt,Xpdenmt,Xpdeadmt,Xmnummt,Xmdenmt,Xmdeadmt,Xpdnummt,Xpddenmt,...
q,order,qnummt,qdenmt,qdeadmt,x,y,Epsilon,Satub,Satlb,qdnum,qdden);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -