在MATLAB中,将状态空间模型转换为传递函数可以通过以下步骤完成:
ss
和 tf
函数matlabA = [...]; % 状态矩阵 B = [...]; % 输入矩阵 C = [...]; % 输出矩阵 D = [...]; % 直接传输矩阵
matlabsys_ss = ss(A, B, C, D);
matlabsys_tf = tf(sys_ss);
matlabsys_tf = minreal(sys_tf);
ss2tf
函数定义状态空间矩阵(同上)。
对每个输入计算传递函数(例如,输入1):
matlab[num, den] = ss2tf(A, B, C, D, 1);
• num
是分子系数矩阵,每行对应一个输出的传递函数。
• den
是分母系数向量。
创建传递函数对象:
matlabsys_tf = tf(num, den);
(可选)约简传递函数:
matlabsys_tf = minreal(sys_tf);
输出说明
• 对于多输入系统,sys_tf
将显示为传递函数矩阵,每个元素对应一个输入到输出的传递函数。
• 使用 minreal
可以消除不可控或不可观模式导致的共同零极点。
matlabsyms s; G = C*inv(s*eye(4)-A)*B; % 理论传递函数 G = simplify(G); % 符号简化 G
要对消就要这样,不然可能得到错误的数值精度的结果:
sys_tf_simplified = minreal(sys_tf, 1e-6); % 增大容忍度
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!