Main Content

tf2ss

将传递函数滤波器参数转换为状态空间形式

说明

示例

[A,B,C,D] = tf2ss(b,a) 将连续时间或离散时间单输入传递函数转换为等效的状态空间表示。

示例

全部折叠

以如下由传递函数描述的系统为例:

H(s)=[2s+3s2+2s+1]s2+0.4s+1.

使用 tf2ss 将其转换为状态空间形式。

b = [0 2 3; 1 2 1];
a = [1 0.4 1];
[A,B,C,D] = tf2ss(b,a)
A = 2×2

   -0.4000   -1.0000
    1.0000         0

B = 2×1

     1
     0

C = 2×2

    2.0000    3.0000
    1.6000         0

D = 2×1

     0
     1

一维离散时间震荡系统由单位质点 m 通过一根单位弹性常量弹簧连接到墙壁构成。传感器以 a Hz 对质量的加速度 Fs=5 取样。

生成 50 个时间样本。定义采样间隔 Δt=1/Fs

Fs = 5;
dt = 1/Fs;
N = 50;
t = dt*(0:N-1);
u = [1 zeros(1,N-1)];

系统的传递函数包含一个解析式:

H(z)=1-z-1(1+cosΔt)+z-2cosΔt1-2z-1cosΔt+z-2.

系统使用正方向的单位冲激进行刺激。使用传递函数计算系统的时间演进。绘制响应。

bf = [1 -(1+cos(dt)) cos(dt)];
af = [1 -2*cos(dt) 1];
yf = filter(bf,af,u);

stem(t,yf,'o')
xlabel('t')

求系统的状态空间表示。计算从全零初始状态开始的时间演进。将其与传递函数预测进行比较。

[A,B,C,D] = tf2ss(bf,af);

x = [0;0];
for k = 1:N
    y(k) = C*x + D*u(k);
    x = A*x + B*u(k);
end

hold on
stem(t,y,'*')
hold off
legend('tf','ss')

输入参数

全部折叠

传递函数分子系数,指定为向量或矩阵。如果 b 是矩阵,则 b 的每行对应于系统的一个输出。

  • 对于离散时间系统,b 包含按 z 的降幂排序的系数。

  • 对于连续时间系统,b 包含按 s 的降幂排序的系数。

对于离散时间系统,b 的列数必须等于 a 的长度。如果这两个数字不同,通过填充零使它们相等。您可以使用函数 eqtflength 来完成这项任务。

传递函数分母系数,指定为向量。

  • 对于离散时间系统,a 包含按 z 的降幂排序的系数。

  • 对于连续时间系统,a 包含按 s 的降幂排序的系数。

输出参量

全部折叠

状态矩阵,以矩阵形式返回。如果系统由 n 个状态变量描述,则 A 为 n×n 矩阵。

数据类型: single | double

输入-状态矩阵,以矩阵形式返回。如果系统由 n 个状态变量描述,则 B 为 n×1 矩阵。

数据类型: single | double

状态-输出矩阵,以矩阵形式返回。如果系统有 q 个输出,并且由 n 个状态变量描述,则 C 为 q×n 矩阵。

数据类型: single | double

馈通矩阵,以矩阵形式返回。如果系统有 q 个输出,则 D 为 q×1 矩阵。

数据类型: single | double

详细信息

全部折叠

传递函数

tf2ss 将给定系统的传递函数表示的参数转换为等效状态空间表示的参数。

  • 对于离散时间系统,状态空间矩阵通过以下方程与状态向量 x、输入 u 和输出 y 相关:

    x(k+1)=Ax(k)+Bu(k),y(k)=Cx(k)+Du(k).

    传递函数是方程组的冲激响应的 Z 变换。可以按状态空间矩阵表示形式将其表示为

    H(z)=C(zIA)1B+D.

  • 对于连续时间系统,状态空间矩阵通过以下方程与状态向量 x、输入 u 和输出 y 相关:

    x˙=Ax+Bu,y=Cx+Du.

    传递函数是方程组的冲激响应的拉普拉斯变换。可以按状态空间矩阵表示形式将其表示为

    H(s)=B(s)A(s)=b1sn1++bn1s+bna1sm1++am1s+am=C(sIA)1B+D.

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2006a 之前推出

另请参阅

| | | | |