How to get a practical controller matrix from a known open-loop matrix function?

Hi,
If I have a known open-loop matrix(e.g. 2x2 transfer function matrix) in the unitary feedback control loop with a known plant function(e.g. 2x2 transfer function) and I want to get the controller matrix to simulate the system, how can I get that controller which is practical to use?
I've tried to directly use 'K = L/P' with a 8th-order plant(P) and 6th-order open-loop function(L). And Matlab gave me a 39th-order controller matrix, which is difficult to implement this high order controller in practice. I'm thinking if there is any alternative way to find out the controller that its order is fewer than 39.
Thanks very much in advance. I'm grateful for any response.

Answers (1)

Below is my plant function and open-loop function for your reference. Just in case you may be interested in trying my problem. Thanks a lot again. % code
bP11=[0.2289 -55.95 5862 -3.318e5 1.055e7 -4.406e8 1.12e10 6.236e10 1.549e8];
aP11=[1 337.1 4.604e4 3.348e6 1.286e8 2.63e9 2.245e10 5.996e10 1.617e08];
bP12=[4.785e-7 -3.35 -116.8 -2.186e4 -2.21e5 -1.98e7 6.31e7 3.737e8 4.313e5];
aP12=[1 157.3 2.144e4 1.556e6 8.445e7 2.614e9 47.799e10 2.525e11 4.37e8];
bP21=[1.501 460.5 3.23e4 7.449e5 -1.729e8 -8.624e9 -2.433e11 -6.858e11 1.281e10];
aP21=[1 341.8 4.574e4 3.334e6 1.273e8 2.521e9 2e10 4.296e10 1.158e8];
bP22=[1.508e-5 16.93 -433.3 8.627e4 -4.144e6 9.783e7 -4.681e9 3.142e10 3.648e10];
aP22=[1 82.44 1.389e4 6.802e5 4.009e7 9.81e8 1.798e10];
P11 = tf(bP11,aP11); P12 = tf(bP12,aP12);
P21 = tf(bP21,aP21); P22 = tf(bP22,aP22);
P = [P11 P12;P21 P22];
bL11=[6.929e15 -5.209e17 6.366e18 -1.696e20 9.83e19 -7.95e21 1.164e23 3.088e22];
aL11=[2.813e17 2.862e19 7.801e20 1.581e22 1.756e23 7.348e23 1.607e23 2.203e20];
bL12=[0];aL12=[1];
bL21=[0];aL21=[1];
bL22=[1.624e15 -1.166e17 8.78e17 -1.804e19 -4.026e20 4.029e21 3.699e20 3.189e18];
aL22=[2.866e17 2.469e19 4.84e20 9.65e21 5.669e22 4.842e21 3.762e19 2.372e16];
L11 = tf(bL11,aL11); L12 = tf(bL12,aL12);
L21 = tf(bL21,aL21); L22 = tf(bL22,aL22);
L = [L11 L12;L21 L22];
K = L/P;

Asked:

on 19 Sep 2012

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!