我正在尝试遵循本教程,已实现
function transfer_function = tf(numerator, denominator)
transfer_function = syslin('c', poly(numerator, "s", "coeff") / poly(denominator, "s", "coeff"));
endfunction
// physical constants:
R = 2.0; // Ohms
L = 0.5; // Henrys
Km = 0.1; // torque constant
Kb = 0.1; // back emf constant
Kf = 0.2; // Nms
J = 0.02; // kg.m^2/s^2
// state-space model:
h1 = tf(Km, [L R]); // armature
h2 = tf(1, [J Kf]); // eqn of motion
dcm = tf2ss(h2) * [h1, 1]; // w = h2 * (h1 * Va + Td)
返回
--> dcm 厘米 = dcm(1)(状态空间系统:) “lss” “A” “B” “C” “D” “X0” “dt” dcm(2)= 一个矩阵 = -0.1 0.5 0. -0.25 dcm(3)= B 矩阵 = 0. 2.236068 0.2236068 0。 dcm(4)= C 矩阵 = 2.236068 0。 dcm(5)= D 矩阵 = 0. 0. dcm(6)= X0(初始状态)= 0。 0。 dcm(7)= 时域 = “C”
这与 MATLAB 产生的不同:
>> 直流 厘米 = 一个= x1 x2 x1 -10 3.2 x2 0 -4 乙 = u1 u2 x1 0 8 x2 0.5 0 C = x1 x2 y1 6.25 0 D = u1 u2 y1 0 0 连续时间状态空间模型。
现在我的问题是:
- 我是否
tf()
正确实现了最小功能,或者有更完整/规范的版本可用/可能? - 是
tf2ss()
MATLAB 的等价物ss()
还是有另一个可用的内置函数? - 如果没有
ss()
可用的等效项,那么提供与上述 MATLAB 教程相同的结果的最小实现是什么?