MATLAB 中inputdelay、outputdelay、iodelay、internaldelay详解
标签:
杂谈 |
分类: matlab |
|
话说在MATLAB中,鄙人今天都快被这几个delay整晕了,关于inputdelay、outputdelay,大家应该不难理解,当然对于一个SISO的系统,这两个还真是没什么分别,不过对于一个MIMO系统,就不一样了。 http://hiphotos.baidu.com/hbwc/pic/item/103773f453fcd9e1f2d385c1.jpg中inputdelay、outputdelay、iodelay、internaldelay详解" TITLE="MATLAB 首先是inputdelay:就是指在B*u(t-tol)这一块,也就是u对于x有tol个延迟 然后是outputdelay:是指theta了,反映在式子中就是,u对于y有tol+theta个延时,而x对于y则有theta个延时 再就是iodelay了,在这个题目中,还真看不出iodelay来,我们换一个瞧瞧。 http://hiphotos.baidu.com/hbwc/pic/item/c6008f94a288c626d21b70a5.jpg中inputdelay、outputdelay、iodelay、internaldelay详解" TITLE="MATLAB 就是这个题目了,人家上面也说了,使用totaldelay可以把这几个delay一起给算出来,但系统中matlab是怎么处理的呢?我们不妨大胆的猜测一下他们的做法。 当然,你也可以open totaldelay来看源文件,不过鄙人实在是看不懂啊,一堆系统函数。 我的想法是这样的,上面系统的延时矩阵写出来就是这样的,[3.4 0;2.7 0.7]。 然后呢,matlab首先做第一步:提取outputdelay,就是把第一列和第二列的最小的那个数拿出来
得出outputdelay=0 第二步:提取inputdelay,首先原有的延时矩阵减去提出的部分得,对应的列减去:[3.4
0,2.0 第三步:剩下的东东都不是公共的了,那就只能是各回各家了,所以就剩下了iodelay,是实在不能公共的了。呵呵,就是这样的,大家可以拿个复杂的传函验证一下。推荐一个; G11=tf(4.00,[50,1],'inputdelay',27);
G12=tf(1.77,[60,1],'inputdelay',25);
G13=tf(1.2,[25,1],'inputdelay',15);
结果是完全没问题的哦!呵呵~~~~ Input delays (listed by channel): 3 2 0 |

加载中…