📄 fig5_9.m
字号:
%Figure 5.9 Non-causal controllers (code to check example on page 187/188)
%
% Copyright 1996-2003 Sigurd Skogestad & Ian Postlethwaite
% $Id: Fig5_9.m,v 1.3 2004/02/03 14:12:00 vidaral Exp $
clear all; close all;
z = 1; % Constant z in transfer function.
t_step = 0; % Unit step at time = t_step.
Gnum = [-1 z]; % Numerator of transfer function.
Gden = [ 1 z]; % Denominator of transfer function.
t = [-5:0.01:5]; % Time vector.
n = length(t); % Number of time steps.
m = find(t==t_step); % Find index at step, i.e. step at t(m).
% GENERATE REFERENCE.
r = [zeros(1,m) ones(1,n-m)];
% GENERATE u FROM UNSTABLE AND NON-CAUSAL CONTROLLERS.
u_unstable = [zeros(1,m) 1-2*exp(z*(t(m+1:n)-t(m)))];
u_noncausal = [2*exp(z*(t(1:m)-t(m))) ones(1,n-m)];
u_real=r;
% SIMULATE USING lsim (in Control Systems Toolbox).
[y_unstable,x] = lsim(Gnum,Gden,u_unstable,t);
[y_noncausal,x] = lsim(Gnum,Gden,u_noncausal,t);
[y_real,x] = lsim(Gnum,Gden,u_real,t);
% PLOT RESULTS.
figure(1)
[Pp] = get(gcf, 'PaperPosition');
set(gcf, 'Units','inches')
set(gcf, 'PaperPosition', [Pp(1) Pp(2) Pp(3) Pp(4)/1.2]);
set(gcf, 'Position', [1 7.0 Pp(3) Pp(4)/1.2]);
subplot(3,2,2)
plot(t,y_unstable)
axis([min(t) max(t) -1 1.1])
title('Output unstable controller:')
xlabel('')
subplot(3,2,1)
plot(t,u_unstable)
axis([min(t) max(t) -10 1])
title('Input unstable controller:')
xlabel('')
subplot(3,2,4)
plot(t,y_noncausal)
axis([min(t) max(t) -1 1.1])
title('Output non-causal controller:')
xlabel('')
subplot(3,2,3)
plot(t,u_noncausal)
axis([min(t) max(t) -0.1 2.1])
title('Input non-causal controller:')
xlabel('')
subplot(3,2,6)
plot(t,y_real)
axis([min(t) max(t) -1 1.1])
title('Output practical controller:')
xlabel('Time [sec]')
subplot(3,2,5)
plot(t,u_real)
axis([min(t) max(t) -0.1 2.1])
title('Input practical controller:')
xlabel('Time [sec]')
[Ap] = get(gca, 'Position');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -