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

我的matlab是7.0版本的,现在做一个求约旦型状态空间模型的题目,有个指令是dif2ss,但是我的这个版本上找不到这指令,无法调用,请问高手有么有其他的函数可以调用?... 我的matlab是7.0版本的,现在做一个求约旦型状态空间模型的题目,有个指令是dif2ss,但是我的这个版本上找不到这指令,无法调用,请问高手有么有其他的函数可以调用?或者给一下dif2ss的程序让我添加到我的函数库里,急用,谢谢 展开
 我来答
tianxiawulang
推荐于2016-03-06 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2601万
展开全部

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(v\a*v,v\b,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验证的却是不唯一的。谢谢你。
追答
方便的话把光盘文件发给我吧,虽然眼下暂时用不到,作为资料储备一下也是好的。邮箱522319871 AT 企鹅,谢谢。
约旦型不是唯一的,这个道理非常简单,比如说,考虑一种特殊的约旦型——A为对角阵,我们如果随便互换两个状态变量的位置,ABC都会相应改变。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式