Inspection reveals that the only difference between T and T_conn is the state ordering. This can be traced back to:
This puts the states of G last whereas they appears first in the system T. To eliminate the discrepancy, you make the following alterations to the connection index based system:
blksys = append(G,C);
connections = [1 3;2 4;3 -1;4 -2];
T_conn = connect(blksys,connections,[3 4],[1 2]);
While this produces the same response at lower frequencies, T_conn is no worse than T. To see a difference, we are observing the behavior at extremely low frequencies, but it turns out that both Tand T_conn have no accuracy at all at such frequencies, as evidenced by the following in say, the frequency band [1e-20 1e5]:
This is due to the pole/zero cancellation at s=0 in G*C and the closed-loop system: You could try "minreal(T)" to get rid of this cancellation. Such cancellations give rise to a 0/0 expression near the zero frequency, which is extremely sensitive to rounding errors.
To summarize, there is nothing wrong with T_conn as computed, as the observed discrepancy is just a manifestation of the fundamental limit of accuracy for any finite-precision computation. You can safely proceed with the T_conn formula in the script.