如何从c2d离散化后的sysd中获取状态空间模型矩阵?
Matlab中提取离散状态空间模型的A、B、C、D矩阵
在Matlab里,从离散化后的状态空间模型sysd中提取A、B、C、D矩阵有两种常用方法:
方法1:直接访问模型属性
离散状态空间模型对象sysd自带对应矩阵的属性,直接调用即可:
- 离散状态矩阵:
sysd.A - 输入矩阵:
sysd.B - 输出矩阵:
sysd.C - 直接传输矩阵:
sysd.D
修改你的示例代码如下:
sys = ss(A,B,C,D); % if Ts>0 then sample the model with a zero-order hold (piecewise constant) input, otherwise return a continuous-time model if Ts>0 sysd = c2d(sys,Ts); % 提取离散矩阵 Ad = sysd.A; Bd = sysd.B; Cd = sysd.C; Dd = sysd.D; end
方法2:使用ssdata函数
Matlab的ssdata函数可以直接从状态空间模型中批量提取四个矩阵,语法更简洁:
if Ts>0 sysd = c2d(sys,Ts); % 批量提取离散矩阵 [Ad, Bd, Cd, Dd] = ssdata(sysd); end
内容的提问来源于stack exchange,提问作者stefano.sil
相关产品推荐
相关产品推荐

