📜  matlab ss2tf symbolic (1)

📅  最后修改于: 2023-12-03 14:44:11.044000             🧑  作者: Mango

MATLAB中的ss2tf和symbolic

在MATLAB中,可以使用ss2tf函数将状态空间模型转换为传递函数模型。同时,还可以使用Symbolic Math Toolbox来执行符号计算,从而求解介于状态空间模型与传递函数模型之间的转换系数。

ss2tf函数

ss2tf(A,B,C,D)函数接受四个参数:系统矩阵A、输入矩阵B、输出矩阵C和直通矩阵D。该函数的返回值为传递函数模型的分子和分母系数向量。

A = [0 1 0; 0 0 1; -4 -5 -2];
B = [0;0;1];
C = [1 0 0];
D = 0;
[num,den] = ss2tf(A,B,C,D)

上述代码将状态空间模型转换为传递函数模型。num变量对应分子系数,den变量对应分母系数。

Symbolic Math Toolbox

Symbolic Math Toolbox提供了symssym命令,用于定义符号变量。可以使用这些变量进行符号计算。

例如,下面的代码定义了符号变量s,并定义了传递函数的分子和分母:

syms s;
num = [3*s^2 + 5*s + 1];
den = [s^3 + 2*s^2 + 3*s + 1];

使用tf2ss函数将传递函数转换为状态空间模型:

[A,B,C,D] = tf2ss(num,den);

然后可以使用ss2tf函数将状态空间模型转换为传递函数模型:

[num1,den1] = ss2tf(A,B,C,D);

两个传递函数模型应该是相同的:

simplify(num1/den1 - num/den)

输出结果为0,说明两个传递函数模型是相同的。

符号计算转换系数

由于ss2tf函数返回的分子和分母系数是数值类型,有时可能需要符号计算求解分子和分母系数。可以使用sym命令将数值矩阵转换为符号矩阵。

例如,下面的代码将状态空间模型转换为传递函数模型,并使用符号计算求解分子和分母系数:

syms s;
A = [0 1 0; 0 0 1; -4 -5 -2];
B = [0;0;1];
C = [1 0 0];
D = 0;
sI = s*eye(size(A));
G = C*inv(sI-A)*B + D;
[num,den] = numden(G);
num = sym2poly(expand(num));
den = sym2poly(expand(den));

代码中,首先使用符号计算求解传递函数G的表达式,然后使用numden函数将表达式分离出分子和分母。最后使用sym2poly将符号矩阵转换为系数向量。

小结

在MATLAB中,可以使用ss2tf函数将状态空间模型转换为传递函数模型。同时,还可以使用Symbolic Math Toolbox进行符号计算,从而求解介于状态空间模型与传递函数模型之间的转换系数。