尝试从下面的离散系统中找到传递函数

时间:2019-04-09 13:35:31

标签: matlab

我正在尝试在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)

我希望获得传递函数

1 个答案:

答案 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