tf objects have three delay properties: InputDelay, OutputDelay, and IODelay. Look at all three of these properties for each element of G:
G = [(-21.6*exp(-1*s))/(8.5*s+1) (1.26*exp(-0.3*s))/(7.05*s+1);...
(-2.75*exp(-1.8*s))/(8.2*s+1) (-4.28*exp(-0.35*s))/(9.0*s+1)]
G =
From input 1 to output...
-21.6
1: exp(-1*s) * ---------
8.5 s + 1
-2.75
2: exp(-1.8*s) * ---------
8.2 s + 1
From input 2 to output...
1.26
1: exp(-0.3*s) * ----------
7.05 s + 1
-4.28
2: exp(-0.35*s) * -------
9 s + 1
Continuous-time transfer function.
[G(1,1).InputDelay G(1,1).OutputDelay G(1,1).IODelay G(1,2).InputDelay G(1,2).OutputDelay G(1,2).IODelay; G(2,1).InputDelay G(2,1).OutputDelay G(2,1).IODelay G(2,2).InputDelay G(2,2).OutputDelay G(2,2).IODelay]
ans =
0 0.3000 0.7000 0 0.3000 0
0 0.3500 1.4500 0 0.3500 0
As shown, the exp(-Ts) terms in G11 and G21 were divided into two different types of delays. It looks like the software is trying capture a common delay at the two outputs, and then makes up for the additional delay as needed with the IODelay. Then pade() comes along and substitutes a first order approximant for both of those delays in G11 and G21, resulting in third order models for Gnew11 and Gnew21
Gnew = pade(G,1)
Gnew =
From input 1 to output...
-21.6 s^2 + 205.7 s - 411.4
1: -------------------------------------
8.5 s^3 + 81.95 s^2 + 171.4 s + 19.05
-2.75 s^2 + 19.51 s - 21.67
2: -------------------------------------
8.2 s^3 + 59.17 s^2 + 71.72 s + 7.882
From input 2 to output...
-1.26 s + 8.4
1: -----------------------
7.05 s^2 + 48 s + 6.667
4.28 s - 24.46
2: -----------------------
9 s^2 + 52.43 s + 5.714
Continuous-time transfer function.
Verify that Gnew11 is based on two first order approximants:
[num1,den1]=pade(.7,1);[num2,den2]=pade(.3,1);
Gnew(1,1), tf(-21.6,[8.5 1])*tf(num1,den1)*tf(num2,den2)
ans =
-21.6 s^2 + 205.7 s - 411.4
-------------------------------------
8.5 s^3 + 81.95 s^2 + 171.4 s + 19.05
Continuous-time transfer function.
ans =
-21.6 s^2 + 205.7 s - 411.4
-------------------------------------
8.5 s^3 + 81.95 s^2 + 171.4 s + 19.05
Continuous-time transfer function.
Explicitly using IODelay on the individual elements looks like it yields what you might have expected.
G2 = [-21.6/(8.5*s+1) (1.26)/(7.05*s+1);...
(-2.75)/(8.2*s+1) (-4.28)/(9.0*s+1)];
G2(1,1).IODelay = 1; G2(1,2).IODelay = 0.3; G2(2,1).IODelay = 1.8; G2(2,2).IODelay = 0.35;
G2
G2 =
From input 1 to output...
-21.6
1: exp(-1*s) * ---------
8.5 s + 1
-2.75
2: exp(-1.8*s) * ---------
8.2 s + 1
From input 2 to output...
1.26
1: exp(-0.3*s) * ----------
7.05 s + 1
-4.28
2: exp(-0.35*s) * -------
9 s + 1
Continuous-time transfer function.
pade(G2,1)
ans =
From input 1 to output...
21.6 s - 43.2
1: ------------------
8.5 s^2 + 18 s + 2
2.75 s - 3.056
2: -------------------------
8.2 s^2 + 10.11 s + 1.111
From input 2 to output...
-1.26 s + 8.4
1: -----------------------
7.05 s^2 + 48 s + 6.667
4.28 s - 24.46
2: -----------------------
9 s^2 + 52.43 s + 5.714
Continuous-time transfer function.
Make sure that G and G2 have the same IO characteristics: