matlab中ss函数_matlab状态空间模型(matlab中如何通过ss函数和tf2ss函数将微分方程转化...)...

这篇博客介绍了如何在MATLAB中利用ss函数和tf2ss函数将微分方程转化为状态空间模型。通过两个具体的方法展示了转换过程,包括传递函数到状态空间模型的转换。还提到了自编函数dif2ss及其可能的实现方式,以及利用jordan函数进行约旦规范型转换。最后,讨论了MATLAB中直接设置状态空间模块的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

matlab中如何通过ss函数和tf2ss函数将微分方程转化...

例如下面的一道题。

方法一:

num=[0 0 10 10];

den=[1 6 6 10];

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

方法二:

num=[0 0 10 10];

den=[1 6 6 10];

gs = tf(num,den)

gss = ss(gs)

matlab中由传递函数生成到状态空间的指令dif2ss

1、dif2ss并非MATLAB系统自带的命令,而是国内某本教材上所载的作者自编函数。我不知道楼主看的是哪本书,根据我查到的信息判断,可能是赵明旺等编著的《现代控制理论》(华中科技大学出版社,第73页):

http://ishare.iask.sina.com.cn/f/23221558.html

书中说该函数在随书光盘中提供,但我未能找到随书光盘。

2、如果愿意做,可以根据该书第49-53页关于约旦规范型的相关内容自行编写程序。

3、另外一个可行的做法是,使用符号数学工具箱的jordan函数来求变换矩阵,以下是示例:>> num_1=[2 14 24];  den_1=[1 5 8 4];

>> sys_1=tf(num_1,den_1);

>> [a,b,c,d]=ssdata(sys_1);

>> [v,j]=jordan(a);

>> sys_2=ss(va*v,v,c*v,d)

a =

x1  x2  x3

x1  -1   0   0

x2   0  -2   1

x3   0   0  -2

b =

u1

x1   2

x2   0

x3   2

c =

x1  x2  x3

y1   6  -2  -5

d =

u1

y1   0

Continuous-time model.

需要注意,这个结果与上面所说赵明旺《现代控制理论》73页并不一致,这是因为,由于状态变量的选择不唯一,约旦规范型也不唯一。转换为输入输出关系的模型(传递函数)看的更清楚:>> tf(sys_1-sys_2)

Transfer function:

-1.29e-014 s^3 - 7.466e-014 s^2 - 1.448e-013 s - 9.716e-014

-----------------------------------------------------------

s^6 + 10 s^5 + 41 s^4 + 88 s^3 + 104 s^2 + 64 s + 16

可见二者是等同的(不严格等于0是由于数值误差造成)。

matlab状态空间模块

在命令窗口直接给A,B,C,D赋值

然后双击你在模型中的State-Space模块,就可以设置A,B,C,D了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值