我正在尝试在Matlab中解决以下系统。该系统是离散系统。我需要转换为状态空间模型系统,以提取4个矩阵。然后找到传递函数。
y(k+2) + 4y(k+1) + 5y(k)= u(k+2)+2u(k+1)+u(k).
我用手解决了这个问题,找到了四个矩阵:
A=[0,1:-5,-4]
B=[-2;4]
C=[1,0,0]
D=[1]
我的问题是,当我尝试运行以下代码时,出现此错误:
使用ss2tf
时出错(第26行)
A和C矩阵的列数必须相同。
1号错误(第5行)
[N1,D1]=ss2tf(A,B,C,D,1);
我的Matlab代码:
A=[0,1;-5,-4];
B=[-2;4];
C=[1,0,0];
D=[1];
[N1,D1]=ss2tf(A,B,C,D,1);
H=tf(N1,D1)
我希望获得传递函数
答案 0 :(得分:1)
请不要忘记您正在处理离散时间系统(将1
作为第三个参数添加到ss2tf
中)。如果您按照注释中的说明纠正了C
矩阵,那么以下代码将完成您想要的操作:
A = [0,1;-5,-4];
B = [-2;4];
C = [1,0];
D = 1;
[N1,D1] = ss2tf(A,B,C,D);
H = tf(N1,D1,1)
H =
z^2 + 2 z + 1
-------------
z^2 + 4 z + 5