Solution 8.8.2
The full MATLAB program used to nd the transfer function is:
%
%load the data
%
load mtr6stepc
t=mtr6stepc(1:500,1);;
y=mtr6stepc(1:500,2);;
plot(t,y)
print -deps sr882mtr6cxa.eps
y=y-y(99);;
t=t-t(99);;
y=y(99:500);;
t=t(99:500);;
y(1) = 0;;
t(1) = 0;;
plot(t,y)
print -deps sr882mtr6cxb.eps
y(150:402) = mean(y(150:402));;
y(145:149) = mean(y(145:149));;
y(140:144) = mean(y(140:144));;
y(135:139) = mean(y(135:139));;
y(130:134) = mean(y(130:134));;
y(125:129) = mean(y(125:129));;
y(120:124) = mean(y(120:124));;
y(115:119) = mean(y(115:119));;
y(110:114) = mean(y(110:114));;
y(105:109) = mean(y(105:109));;
y(100:104) = mean(y(100:104));;
y(95:99) = mean(y(95:99));;
y(90:94) = mean(y(90:94));;
y(85:89) = mean(y(85:89));;
y(80:84) = mean(y(80:84));;
y(75:79) = mean(y(75:79));;
y(70:74) = mean(y(70:74));;
y(65:69) = mean(y(65:69));;
y(60:64) = mean(y(60:64));;
y(55:59) = mean(y(55:59));;
y(50:54) = mean(y(50:54));;
plot(t,y)
print -deps sr882mtr6cxc.eps
% zero the summer
%
1
asum = 0.0;;
%
%Find the length of the array y(t) Note:this the step response. It has to be
% pulled into Matlab before this program is run.
%
top = size(y);;
top = top(1,1)
%
% Initialize counter.
%
k=1;;
%
%
% Find maximum value of step response.
%
K0 = y(top)
%
%
% Form function K0 - y(t). Note y(t) is the same as yu(t) in the write up.
%
ftemp = K0 - y;;
%
fsave1 = ftemp;;
%
% Reset counter
%
k=2;;
%
% Integrate K0 - y(t). and form the function y1(t).
%
while ( k <= top)
l= k-1;;
asum = asum + ( ( ( ftemp(k) + ftemp(l) ) /2 ) *( t(k) - t(l) ) );;
t1(k) = t(k);;
f1(k) = asum;;
k=k+1;;
end
%
% Save data for plotting.
%
save time.dat t1 -ascii
save f1.dat f1 -ascii
save ftempa.dat ftemp -ascii
%
2
% Set K1 = to max(y1(t)), that is its final steady state value.
%
K1 = asum
%
%
% form function: K1 - y1(t).
%
ftemp1 = K1 - f1;;
%
% Save function for later plotting
%
save ftempb.data ftemp1 -ascii
%
% reset summer
%
asum = 0.0;;
%
% Reset counter
%
k=2;;
%
% Integrate K1 - y1(t) to get y2(t) (called f2 in program)
%
while ( k <= top)
l= k-1;;
asum = asum + ( ( ( ftemp1(k) + ftemp1(l) ) /2 ) *( t(k) - t(l) ) );;
f2(k) = asum;;
k=k+1;;
end
%
% Set K2 equal to maximum value of y2(t).
%
K2 = asum
%
% Save function y2(t) for later plotting
%
save f2.data f2 -ascii
%
% Find poles of transfer function.
%
a1 = K1/K0
a2 = ( a1*K1 - K2 )/K0
cpol = [a2 a1 1]
p =roots(cpol)
%
3
-1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4
0
0.5
1
1.5
2
2.5
3
3.5
Figure 1: Rawstep response data
% Find gain of transfer function
%
Kplant = K0/a2
g=zpk([],[p(1) p(2)],Kplant)
T=linspace(0,4.01,402);;
u=ones(402,1);;
[yhat,T] = lsim(g,u,T);;
plot(t,y,'k-',T,yhat,'k--')
print -deps sr882mtr6cxd.eps
The rst step is to get the data into MATLAB. That is done bytheMATLAB
statements:
load mtr6stepc
t=mtr6stepc(1:500,1);;
y=mtr6stepc(1:500,2);;
The plot of the raw data is shown in Figure1. As can be seen, the plot does not
start at t =0and the initial voltage is not zero. The MATLAB statements
y=y-y(99);;
t=t-t(99);;
4
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
0
0.5
1
1.5
2
2.5
3
3.5
Figure 2: Adjusted step response data
y=y(99:500);;
t=t(99:500);;
y(1) = 0;;
t(1) = 0;;
produce the adjusted step response shown in Figure 2 The rest of the MAT-
LAB program is designed to do the successiveintegrations necessary to nd
the twopoles. The MATLAB statements
y(150:402) = mean(y(150:402));;
y(145:149) = mean(y(145:149));;
y(140:144) = mean(y(140:144));;
y(135:139) = mean(y(135:139));;
y(130:134) = mean(y(130:134));;
y(125:129) = mean(y(125:129));;
y(120:124) = mean(y(120:124));;
y(115:119) = mean(y(115:119));;
y(110:114) = mean(y(110:114));;
y(105:109) = mean(y(105:109));;
y(100:104) = mean(y(100:104));;
5
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
0
0.5
1
1.5
2
2.5
3
3.5
Figure 3: Smoth step response data
y(95:99) = mean(y(95:99));;
y(90:94) = mean(y(90:94));;
y(85:89) = mean(y(85:89));;
y(80:84) = mean(y(80:84));;
y(75:79) = mean(y(75:79));;
y(70:74) = mean(y(70:74));;
y(65:69) = mean(y(65:69));;
y(60:64) = mean(y(60:64));;
y(55:59) = mean(y(55:59));;
y(50:54) = mean(y(50:54));;
are a crude smoothing program designed to help the algorith converge. The
smoothed response is shown in Figure 3
For this problem the alogrithm gives the answer
G(s)=
94:362
(s +3:64)(s+8:292)
:
This is unadjusted for the size of the input voltage, about 34 V, as shown
6
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
0
0.5
1
1.5
2
2.5
3
3.5
Figure 4: Comparison of model step response to actual step response
in Figure 8.18 of the text. So we nally arriveat
G(s)=
2:775
(s +3:64)(s+8:292)
:
The step response of the model is compared to the actual recorded step
response in Figure 4
The matchisexcellent.
7