首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab:如何分解传递函数

Matlab:如何分解传递函数
EN

Stack Overflow用户
提问于 2012-03-25 22:03:57
回答 1查看 4.2K关注 0票数 0

我需要将传递函数分成两个传递函数,这样S2 = S1‘实际上我有S2*S1的乘积

代码语言:javascript
复制
s = tf('s')
Suu = -1.6/((s-4)*(s+4))
Sux = -0.8/((s+4)*(s-4)*(s^2 + 0.1*s + 1))
Sxx = 0.3*(s - 4.163)*(s + 4.163)/((s+4)*(s-4)*(s^2 - 0.1*s + 1)*(s^2 + 0.1*s + 1))
Sxu = Sux'
SxdSdx = Sxx - (Sxu*Sux)/Suu

如果Sxd = Sdx‘,如何确定Sxd和Sdx?有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-26 03:30:27

你要做的就是谱分解。关于谱分解算法的一篇很好的调查论文是A.H.赛义德和T.Kailath,"A survey of spectral factorization Methods",Numer。线性代数应用,第8卷,第467-496页,2001。

如果您的传递函数可以表示为您可以分解的有理函数(即,s中多项式的比率),那么您可以选择S1作为其零点(分子多项式的根)和极点(分母多项式的根)都在左半平面(即实部小于零)的有理函数。如果有真正的根,那么这些根必须成对出现,您可以将每对根中的一个成员分配给S1。如果你这样做,那么S1*conj(S1)将是原始的传递函数。

将传递函数分解的数值方法取决于传递函数的极点和零点的性质(有多少个,它们有多接近等),以及你如何知道传递函数(你是通过它的多项式系数知道的吗?你是通过它在s空间中的选定点的值来知道它的吗?),你知道它的准确性(你对传递函数系数的准确性有多高),以及你希望你的因式分解有多精确。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9860734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档