matlab 急!!!

来源:百度知道 编辑:UC知道 时间:2024/09/28 06:57:58
A = [ -9.0201 17.7791;-1.6943 3.2138 ];
B = [ -0.5112 0.5362;-0.002 -1.8470];
C = [ -3.2897 2.4544;-13.5009 18.0745];
D = [-0.5476 -0.1410;-0.6459 0.2958 ];
sys1 = tf(10,[1 5]);
sys2 = ss(A,B,C,D);
sys3 = zpk(-1,-2,2);
sys = append(sys1,sys2,sys3);
Q = [3 1 -4;5 3 0];
inputs = [1 2];
outputs = [2 3];
sysc = connect(sys,Q,inputs,outputs)
??? Error using ==> -
Matrix dimensions must agree.

Error in ==> E:\MATLAB65\toolbox\control\control\@lti\connect.m
On line 58 ==> bb = b/(eye(nd) - k*d);
58 bb = b/(eye(nd) - k*d);
aa = a + bb*k*c;
t = eye(md) - d*k;
cc = t\c;
dd = t\d;
急!!!那位仁兄帮忙解决一下啊!谢谢啊!

问题在于你把系统的输入输出的维数弄错了,稍微改一下就行,当然可能不是你想要的对应连接,你可以自己再试一下,程序如下:
A = [ -9.0201 17.7791;-1.6943 3.2138 ];
B = [ -0.5112 0.5362;-0.002 -1.8470];
C = [ -3.2897 2.4544;-13.5009 18.0745];
D = [-0.5476 -0.1410;-0.6459 0.2958 ];
sys1 = tf(10,[1 5]);
sys2 = ss(A,B,C,D);
sys3 = zpk(-1,-2,2);
sys = append(sys1,sys2,sys3);
Q = [2 1 -2;1 2 0];
inputs = [1 2];
outputs = [2 1];
sysc = connect(sys,Q,inputs,outputs)

-------------------------
运行结果如下:

a =
x1 x2 x3
x1 -17.1 -29.09 21.7
x2 -2.825 -12.74 20.55
x3 -0.01105 -1.709 3.225

b =
u1 u2
x1 4 -4.842
x2 0 -1.13
x3 0 -0.004421

c =
x1 x2 x3
y1 -3.026 -7.272 5.425
y2 2.5 0 0

d =
u1 u2
y1 0 -1.21
y2 0 0

Continuous-time model.